欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

php 资料上传类

程序员文章站 2022-05-06 09:09:36
...
php 文件上传类
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);
  }
 }
php 资料上传类

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。

相关文章

相关视频