电脑安全

您当前的位置:主页 > 电脑安全 >

PHP通用文件上传类-网络编程

来源:[db:来源]标题:   文件    编辑:电脑技术全能网 时间:2019-09-20 12:30

原标题:PHP通用文件上传类-网络编程
   因为做名目中常常碰到文件上传,因而封装了一个通用的文件上传类,感化支撑组文件上传,而且差别的上传域能够上传差别的文件范例,差别的文件范例限度的文件巨细也能够不雷同。举例来讲:用户可上传一种展品并可为该展品上传一张缩略图,那末缩略图文件限度范例能够为jpg,gif,png等,而展品文件限度范例能够为mov,avi,mpeg等,而图片巨细能够限度为100KB,音频视频巨细能够限度为2MB。类代码以下:/*文件上传类*/classUpload{public$InputName;//文件上传域控件名/***同意上传的文件范例*情势为array(''image/jpeg'',''image/png'',''image/gif'')或包括此类数组的数组(与每个上传域控件对应)*/public$FileType;/***最大上传文件巨细(单元:byte)*情势为array(''image''=>$size,''audio''=>$size)(表现每种利用文件范例所对应的上传巨细)或包括此类数组的数组(与每个上传域控件对应)或一数值(表现全部上传文件均限度在此巨细之下)*/public$FileMaxSize;public$FileSavePath;//文件保留门路(可为数组情势,表现差别上传域上传文件到差别的门路)public$FileSaveName;//文件保留名(不包括后缀名)(可为数组情势,表现差别上传域上传文件保留的差别称号)public$NoteFileFalse;//文件过错提醒public$NoteFileType;//文件范例不符提醒public$NoteFileSize;//文件巨细超越提醒/*上传文件并前往文件名信息(包括后缀名)*/publicfunctionUploadFile(){$this->CheckFile();//测验文件$file=$_FILES[$this->InputName];$file_number=count($file[''name'']);//要上传的文件数$file_save_full_name=array();//文件保留名(包括后缀名)for($i=0;$i<$file_number;$i++){$name=$file[''name''][$i];if(!empty($name))//文件不为空{/*断定文件保留门路*/if(is_array($this->FileSavePath)){$file_save_path=$this->FileSavePath[$i];}else{$file_save_path=$this->FileSavePath;}/*断定文件保留名(不包括后缀名)*/if(is_array($this->FileSaveName)){$file_save_name=$this->FileSaveName[$i];}else{$file_save_name=$this->FileSaveName;}/*开端保留*/$this->CreatePath($file_save_path);//假如门路不存在则创立门路if(!move_uploaded_file($file["tmp_name"][$i],$file_save_path.$file_save_name.$this->GetSuffix($file[''name''][$i]))){die($name.''文件上传失利'');}else{$file_save_full_name[]=$file_save_name.$this->GetSuffix($file[''name''][$i]);}}else{$file_save_full_name[]=null;}}unlink($file);/*假如只要一个文件,则前往单个文件名*/if(count($file_save_full_name)==1){$file_save_full_name=$file_save_full_name[0];}return$file_save_full_name;}/*测验文件*/privatefunctionCheckFile(){$file=$_FILES[$this->InputName];$file_number=count($file[''name'']);//要上传的文件数for($i=0;$i<$file_number;$i++){if(!empty($file[''name''][$i]))//文件不为空{$name=$file[''name''][$i];$type=$file[''type''][$i];$size=$file[''size''][$i];$error=$file[''error''][$i];/*断定同意上传文件范例列表*/if(is_array($this->FileType[0])){$file_type=$this->FileType[$i];}else{$file_type=$this->FileType;}/*断定最大上传文件巨细*/if(is_array($this->FileMaxSize)){$file_max_size_key=explode(''/'',$type);$file_max_size_key=$file_max_size_key[0];if(is_array($this->FileMaxSize[0])){$file_max_size=$this->FileMaxSize[$i][$file_max_size_key];}else{$file_max_size=$this->FileMaxSize[$file_max_size_key];}}else{$file_max_size=$this->FileMaxSize;}/*文件过错*/if($error>0){die($name. $this->NoteFileFalse);}/*文件范例不符*/if(!in_array($type,$file_type)){die($name. $this->NoteFileType);}/*文件巨细超越最大上传文件巨细*/if(!is_null($file_max_size)&&$size>$file_max_size){die($name. $this->NoteFileSize);}}}}/*猎取文件后缀名*/privatefunctionGetSuffix($fileName){returnsubstr($fileName,strrpos($fileName,"."));}/*假如门路不存在则创立门路*/privatefunctionCreatePath($filePath){if(!file_exists($filePath)){mkdir($filePath);}}} 应用方式:接着以本文扫尾所举例子来讲明该类的挪用方式(呵呵,挪用是很便利的):$upload_obj = new Upload(); // 文件上传工具$upload_obj->InputName = ''upload_test''; // 文件上传域控件名$upload_obj->FileType = array(array(''image/jpeg'', ''image/png''), array(''audio/mpeg'', ''video/x-msvideo'')); // 同意上传的文件范例$upload_obj->FileMaxSize = array(''image'' => 100 * 1024, ''audio'' => 2 * 1024 * 1024, ''video'' => 2 * 1024 * 1024); $upload_obj->FileSavePath = array(''upload/files/s/'', ''upload/files/z/'');$upload_obj->FileSaveName = time();$upload_obj->NoteFileFalse = ''文件过错'';$upload_obj->NoteFileType = ''文件范例不符'';$upload_obj->NoteFileSize = ''文件巨细超越'';$file_save_full_name = $upload_obj->UploadFile(); // 上传并猎取文件全名(基础名加扩大名)(假如是多个文件则为数组情势)(全名用于在数据库中存储信息)总结:就此可轻松完成多少文件上传,实在归根结底用到了PHP组文件上传,要留神的就是控件名的name后别忘了加上[],如许的利益就是碰到多个文件上传时就不必在挪用层停止轮回或一个一个处置上传了,咱们的利用也因而而轻松。

上一篇:SQL创建视图实例-网络编程

下一篇:没有了