class Upload{ ???//错误信息 ???private $errorNo; ???private $errorMsg; ???//文件类型 ???private $ext; ???//允许的文件类型 ???private $allowExt; ???//文件的大小 ???private $size; ???//允许的文件大小 ???private $allowSize; ???//存放图片的主文件名称 ???private $dir; ???//子文件夹名称 ???private $dirSec; ???//临时文件名 ???private $tmpName; ???//分隔符 ???const DS = DIRECTORY_SEPARATOR; ???public function __construct($file,$dir=‘upload‘,$allowExt=[‘jpg‘,‘jpeg‘,‘gif‘,‘png‘],$allowSize = 2097152){ ???????$this->errorNo = $file[‘error‘]; ???????$this->ext = $file[‘name‘]; ???????$this->size = $file[‘size‘]; ???????$this->tmpName=$file[‘tmp_name‘]; ???????$this->dir = $dir; ???????$this->allowExt=$allowExt; ???????$this->allowSize=$allowSize; ???} ???public function UpLoad(){ ???????if(!$this->checkFile()){ ???????????return $this->errorMsg; ???????} ???????if(!$this->createDir()){ ???????????return $this->errorMsg; ???????}; ???????echo $this->moveFile(); ???} ???private function checkFile(){ ???????if(!$this->checkError()){ ???????????$this->errorMsg=‘文件错误,无法上传!‘; ???????????return false; ???????} ???????if(!$this->checkExt()){ ???????????$this->errorMsg=‘不是图片,无法上传!‘; ???????????return false; ???????} ???????if(!$this->checkSize()){ ???????????$this->errorMsg=‘文件超过指定大小,无法上传‘; ???????????return false; ???????} ???????return true; ???} ???//检查文件错误 ???private function checkError(){ ???????if($this->errorNo!=0){ ???????????return false; ???????} ???????return true; ???} ???//检查文件类型 ???private function checkExt(){ ???????if(!in_array(pathinfo($this->ext)[‘extension‘],$this->allowExt)){ ???????????return false; ???????} ???????return true; ???} ???//检查文件大小 ???private function checkSize(){ ???????if($this->size > $this->allowSize){ ???????????return false; ???????} ???????return true; ???} ???//创建文件夹 ???private function createDir(){ ???????$this->dirSec = $this->dir.self::DS.date(‘Y-m-d‘); ???????if(!file_exists($this->dir)){ ???????????if(!(mkdir($this->dir) && mkdir($this->dirSec))){ ???????????????$this->errorMsg=‘主目录创建失败‘; ???????????????return false; ???????????} ???????}elseif(!file_exists($this->dirSec)){ ???????????if(!mkdir($this->dirSec)){ ???????????????$this->errorMsg=‘子目录创建失败‘; ???????????????return false; ???????????} ???????} ???????return true; ???} ???//移动文件 ???private function moveFile(){ ???????$imgName = date(‘YmdHis‘).‘_‘.mt_rand(10000,99999); ???????move_uploaded_file($this->tmpName,$this->dirSec.self::DS.$imgName.‘.‘.pathinfo($this->ext)[‘extension‘]); ???????return $this->dirSec.self::DS.$imgName.‘.‘.pathinfo($this->ext)[‘extension‘]; ???}}
自己写了一个,拿去直接用
$file = $_FILES[‘img‘];
//new Upload(获取的文件信息,上传的文件夹,允许的文件类型,允许的文件大小);
$upload = new Upload($file,‘upload‘,[‘gif‘,‘png‘,‘jpg‘,‘jpeg‘],444444444);
$upload->UpLoad();
PHP文件上传类
原文地址:http://blog.51cto.com/woaijorden/2152075