首頁 後端開發 php教程 php 资料上传类

php 资料上传类

Jun 13, 2016 am 11:19 AM

php 文件上传类

<?php/*** php 文件上传类* www.jbxue.com*/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

熱門文章

兩個點博物館:邦格荒地地點指南
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
倉庫:如何復興隊友
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱門文章

兩個點博物館:邦格荒地地點指南
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
倉庫:如何復興隊友
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱門文章標籤

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

11個最佳PHP URL縮短腳本(免費和高級) 11個最佳PHP URL縮短腳本(免費和高級) Mar 03, 2025 am 10:49 AM

11個最佳PHP URL縮短腳本(免費和高級)

在Laravel中使用Flash會話數據 在Laravel中使用Flash會話數據 Mar 12, 2025 pm 05:08 PM

在Laravel中使用Flash會話數據

6個額外的技能,每個PHP開發人員都應該擁有 6個額外的技能,每個PHP開發人員都應該擁有 Feb 28, 2025 am 10:52 AM

6個額外的技能,每個PHP開發人員都應該擁有

了解PHP中的陣列 了解PHP中的陣列 Feb 28, 2025 am 10:53 AM

了解PHP中的陣列

構建具有Laravel後端的React應用程序:第2部分,React 構建具有Laravel後端的React應用程序:第2部分,React Mar 04, 2025 am 09:33 AM

構建具有Laravel後端的React應用程序:第2部分,React

簡化的HTTP響應在Laravel測試中模擬了 簡化的HTTP響應在Laravel測試中模擬了 Mar 12, 2025 pm 05:09 PM

簡化的HTTP響應在Laravel測試中模擬了

在Codecanyon上的12個最佳PHP聊天腳本 在Codecanyon上的12個最佳PHP聊天腳本 Mar 13, 2025 pm 12:08 PM

在Codecanyon上的12個最佳PHP聊天腳本

php中的捲曲:如何在REST API中使用PHP捲曲擴展 php中的捲曲:如何在REST API中使用PHP捲曲擴展 Mar 14, 2025 am 11:42 AM

php中的捲曲:如何在REST API中使用PHP捲曲擴展

See all articles