您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息

完全封装好的php上传文件类

2024/3/27 19:53:19发布9次查看
class fileupload {private $filepath; //指定上传文件保存的路径private $allowtype=array('gif', 'jpg', 'png', 'jpeg'); //充许上传文件的类型private $maxsize=1000000; //允上传文件的最大长度 1mprivate $israndname=true; //是否随机重命名, false不随机,使用原文件名private $originname; //源文件名称private $tmpfilename; //临时文件名private $filetype; //文件类型private $filesize; //文件大小private $newfilename; //新文件名private $errornum=0; //错误号private $errormess=; //用来提供错误报告 //用于对上传文件初使化//1. 指定上传路径, 2,充许的类型, 3,限制大小, 4,是否使用随机文件名称//让用户可以不用按位置传参数,后面参数给值不用将前几个参数也提供值function __construct($options=array()){foreach($options as $key=>$val){$key=strtolower($key);//查看用户参数中数组的下标是否和成员属性名相同if(!in_array($key,get_class_vars(get_class($this)))){continue;}$this->setoption($key, $val);}}private function geterror(){$str=上传文件{$this->originname}时出错:;switch($this->errornum){case 4: $str .= 没有文件被上传; break;case 3: $str .= 文件只被部分上传; break;case 2: $str .= 上传文件超过了html表单中max_file_size选项指定的值; break;case 1: $str .= 上传文件超过了php.ini 中upload_max_filesize选项的值; break;case -1: $str .= 末充许的类型; break;case -2: $str .= 文件过大,上传文件不能超过{$this->maxsize}个字节; break;case -3: $str .= 上传失败; break;case -4: $str .= 建立存放上传文件目录失败,请重新指定上传目录; break;case -5: $str .= 必须指定上传文件的路径; break;default: $str .= 末知错误;}return $str.'
';}//用来检查文件上传路径private function checkfilepath(){if(empty($this->filepath)) {$this->setoption('errornum', -5);return false;}if(!file_exists($this->filepath) || !is_writable($this->filepath)){if(!@mkdir($this->filepath, 0755)){$this->setoption('errornum', -4);return false;}}return true;}//用来检查文件上传的大小private function checkfilesize() {if($this->filesize > $this->maxsize){$this->setoption('errornum', '-2');return false;}else{return true;}}//用于检查文件上传类型private function checkfiletype() {if(in_array(strtolower($this->filetype), $this->allowtype)) {return true;}else{$this->setoption('errornum', -1);return false;}}//设置上传后的文件名称private function setnewfilename(){if($this->israndname){$this->setoption('newfilename', $this->prorandname());} else {$this->setoption('newfilename', $this->originname);}} //设置随机文件名称private function prorandname(){$filename=date(ymdhis).rand(100,999);return $filename.'.'.$this->filetype;}private function setoption($key, $val){$this->$key=$val;}//用来上传一个文件function uploadfile($filefield){$return=true;//检查文件上传路径if(!$this->checkfilepath()){$this->errormess=$this->geterror();return false;}$name=$_files[$filefield]['name'];$tmp_name=$_files[$filefield]['tmp_name'];$size=$_files[$filefield]['size'];$error=$_files[$filefield]['error'];if(is_array($name)){$errors=array();for($i=0; $iif($this->setfiles($name[$i], $tmp_name[$i], $size[$i], $error[$i])){if(!$this->checkfilesize() || !$this->checkfiletype()){$errors[]=$this->geterror();$return=false;}}else{$error[]=$this->geterror();$return=false;}if(!$return)$this->setfiles();}if($return){$filenames=array();for($i=0; $iif($this->setfiles($name[$i], $tmp_name[$i], $size[$i], $error[$i])){$this->setnewfilename();if(!$this->copyfile()){$errors=$this->geterror();$return=false;}else{$filenames[]=$this->newfilename;}}}$this->newfilename=$filenames;}$this->errormess=$errors;return $return;} else {if($this->setfiles($name, $tmp_name, $size, $error)){if($this->checkfilesize() && $this->checkfiletype()){$this->setnewfilename();if($this->copyfile()){return true;}else{$return=false;}}else{$return=false;}}else{$return=false;}if(!$return)$this->errormess=$this->geterror();return $return;}}private function copyfile(){if(!$this->errornum){$filepath=rtrim($this->filepath, '/').'/';$filepath.=$this->newfilename;if(@move_uploaded_file($this->tmpfilename, $filepath)) {return true;}else{$this->setoption('errornum', -3);return false;}}else{return false;}}//设置和$_files有关的内容private function setfiles($name=, $tmp_name='', $size=0, $error=0){$this->setoption('errornum', $error);if($error){return false;}$this->setoption('originname', $name);$this->setoption('tmpfilename', $tmp_name);$arrstr=explode('.', $name);$this->setoption('filetype', strtolower($arrstr[count($arrstr)-1]));$this->setoption('filesize', $size);return true;}//用于获取上传后文件的文件名function getnewfilename(){return $this->newfilename;}//上传如果失败,则调用这个方法,就可以查看错误报告function geterrormsg() {return $this->errormess;}}
复制代码
装好, 上传文件, php
该用户其它信息

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录 Product