찾다
php教程PHP源码完整php 文件上传类

<script>ec(2);</script>

完整php 文件上传类

class UploadFile {
 /**
  * 允许的上传文件类型
  * @var array $allowFileTypes
  * @access private
  */
 private $allowFileTypes = array('jpeg','jpg','gif','bmp','png');

 /**
  * 允许的上传文件大小,单位字节
  * @var int $maxFileSize
  * @access public
  */
 public $maxFileSize = 8388608;

 /**
  * 构造函数
  */
 public function __construct() {

 }

 /**
  * 设置允许的文件类型
  * @param mixed $fileTypes 文件类型列表可以是数组和字符串,用“,”号隔开
  * @return void
  * @access public
  */
 public function setAllowFileType($fileTypes) {
  if (!is_array($fileTypes)) {
   $this->allowFileTypes = explode(',', $fileTypes);
  } else {
   $this->allowFileTypes = $fileTypes;
  }
  return;
 }

 /**
  * 上传文件
  * @param string $fileField  要上传的文件如$_FILES['file']
  * @param string $destFolder 上传的目录,会自动建立
  * @param string $fileTypes   上传后文件命名方式0使用原文件名1使用当前时间戳作为文件名
  * @return int
  * @access public
  */
 public function upload($fileField, $destFolder = './', $fileNameType = 1) {

  switch ($fileField['error']) {
   case UPLOAD_ERR_OK : //其值为 0,没有错误发生,文件上传成功。
   $upload_succeed = true;
   break;
   case UPLOAD_ERR_INI_SIZE : //其值为 1,上传的文件超过了 php.ini 中 upload_max_filesize 选项限制的值。
   case UPLOAD_ERR_FORM_SIZE : //其值为 2,上传文件的大小超过了 HTML 表单中 MAX_FILE_SIZE 选项指定的值。
   $errorMsg = '文件上传失败!失败原因:文件大小超出限制!';
   $errorCode = -103;
   $upload_succeed = false;
   break;
   case UPLOAD_ERR_PARTIAL : //值:3; 文件只有部分被上传。
   $errorMsg = '文件上传失败!失败原因:文件只有部分被上传!';
   $errorCode = -101;
   $upload_succeed = false;
   break;
   case UPLOAD_ERR_NO_FILE : //值:4; 没有文件被上传。
   $errorMsg = '文件上传失败!失败原因:没有文件被上传!';
   $errorCode = -102;
   $upload_succeed = false;
   break;
   case UPLOAD_ERR_NO_TMP_DIR : //其值为 6,找不到临时文件夹。PHP 4.3.10 和 PHP 5.0.3 引进。
   $errorMsg = '文件上传失败!失败原因:找不到临时文件夹!';
   $errorCode = -102;
   $upload_succeed = false;
   break;
   case UPLOAD_ERR_CANT_WRITE : //其值为 7,文件写入失败。PHP 5.1.0 引进。
   $errorMsg = '文件上传失败!失败原因:文件写入失败!';
   $errorCode = -102;
   $upload_succeed = false;
   break;
   default : //其它错误
   $errorMsg = '文件上传失败!失败原因:其它!';
   $errorCode = -100;
   $upload_succeed = false;
   break;
  }
  if ($upload_succeed) {
   if ($fileField['size']>$this->maxFileSize) {
    $errorMsg = '文件上传失败!失败原因:文件大小超出限制!';
    $errorCode = -103;
    $upload_succeed = false;
   }
   if ($upload_succeed) {
    $fileExt = FileSystem::fileExt($fileField['name']);
    if (!in_array(strtolower($fileExt),$this->allowFileTypes)) {
     $errorMsg = '文件上传失败!失败原因:文件类型不被允许!';
     $errorCode = -104;
     $upload_succeed = false;
    }
   }
  }
  if ($upload_succeed) {
   if (!is_dir($destFolder) && $destFolder!='./' && $destFolder!='../') {
    $dirname = '';
    $folders = explode('/',$destFolder);
    foreach ($folders as $folder) {
     $dirname .= $folder . '/';
     if ($folder!='' && $folder!='.' && $folder!='..' && !is_dir($dirname)) {
      mkdir($dirname);
     }
    }
    chmod($destFolder,0777);
   }
   switch ($fileNameType) {
    case 1:
     $fileName = date('YmdHis');
     $dot = '.';
     $fileFullName = $fileName . $dot . $fileExt;
     $i = 0;
     //判断是否有重名文件
     while (is_file($destFolder . $fileFullName)) {
      $fileFullName = $fileName . $i++ . $dot . $fileExt;
     }
     break;
    case 2:
     $fileFullName = date('YmdHis');
     $i = 0;
     //判断是否有重名文件
     while (is_file($destFolder . $fileFullName)) {
      $fileFullName = $fileFullName . $i++;
     }
     break;
    default:
     $fileFullName = $fileField['name'];
     break;
   }
   //die($destFolder . $fileFullName);
   $tempfile = str_replace('\\','\',$fileField['tmp_name']);
   //$files =
   if (move_uploaded_file($tempfile, $destFolder . $fileFullName)) {
    return $fileFullName;
   } else {
    $errorMsg = $destFolder.$fileFullName." 文件上传失败!失败原因:本地文件系统读写权限出错!";
    $errorCode = -105;
    $upload_succeed = false;
   }
  }
  if (!$upload_succeed) {
   throw new Exception($errorMsg,$errorCode);
  }

 }

성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

Video Face Swap

Video Face Swap

완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

뜨거운 도구

SecList

SecList

SecLists는 최고의 보안 테스터의 동반자입니다. 보안 평가 시 자주 사용되는 다양한 유형의 목록을 한 곳에 모아 놓은 것입니다. SecLists는 보안 테스터에게 필요할 수 있는 모든 목록을 편리하게 제공하여 보안 테스트를 더욱 효율적이고 생산적으로 만드는 데 도움이 됩니다. 목록 유형에는 사용자 이름, 비밀번호, URL, 퍼징 페이로드, 민감한 데이터 패턴, 웹 셸 등이 포함됩니다. 테스터는 이 저장소를 새로운 테스트 시스템으로 간단히 가져올 수 있으며 필요한 모든 유형의 목록에 액세스할 수 있습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

VSCode Windows 64비트 다운로드

VSCode Windows 64비트 다운로드

Microsoft에서 출시한 강력한 무료 IDE 편집기

맨티스BT

맨티스BT

Mantis는 제품 결함 추적을 돕기 위해 설계된 배포하기 쉬운 웹 기반 결함 추적 도구입니다. PHP, MySQL 및 웹 서버가 필요합니다. 데모 및 호스팅 서비스를 확인해 보세요.

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기