首页 > 代码库 > php文件上传(多文件上传)

php文件上传(多文件上传)

<html><body><form method="post" action="./upload.php" name="frmUpload" enctype="multipart/form-data" >    <input type="file" name="userfile" style="WIDTH: 282px">    <input type="submit" align="center" name="upfiles" value="确定"></form><form method="post" action="./upload.php" name="frmUpload" enctype="multipart/form-data" >    <input type="file" name="userfile[]" style="WIDTH: 282px">    <input type="file" name="userfile[]" style="WIDTH: 282px">    <input type="file" name="userfile[]" style="WIDTH: 282px">    <input type="submit" align="center" name="upfiles" value="确定"></form></body></html>

 

upload.php

<?phpclass File_upload{public $upload_path=‘./upload/‘;//上传文件的路径public $allow_type=array();//允许上传的文件类型public $max_size=‘20480‘;//允许的最大文件大小public $overwrite=false;//是否设置成覆盖模式public $renamed=false;//是否直接使用上传文件的名称,还是系统自动命名/*** 私有变量*/private $upload_file=array();//保存上传成功文件的信息private $upload_file_num=0;//上传成功文件的数目private $succ_upload_file=array();//成功保存的文件信息/*** 构造器** @param string $upload_path* @param string $allow_type* @param string $max_size*/public function __construct($upload_path=‘./upload/‘,$allow_type=‘jpg|bmp|png|gif|jpeg‘,$max_size=‘204800‘){$this->set_upload_path($upload_path);$this->set_allow_type($allow_type);$this->max_size=$max_size;$this->get_upload_files();}/*** 设置上传路径,并判定** @param string $path*/public function set_upload_path($path){if(file_exists($path)){if(is_writeable($path)){$this->upload_path=$path;}else{if(@chmod($path,‘0666‘))$this->upload_path=$path;}}else{if(@mkdir($path,‘0666‘)){$this->upload_path=$path;}}}//设置上传文件类型public function set_allow_type($types){$this->allow_type=explode("|",$types);}//上传文件public function get_upload_files(){foreach ($_FILES AS $key=>$field){$this->get_upload_files_detial($key);}}//上传文件数据存放到数组中public function get_upload_files_detial($field){if(is_array($_FILES["$field"][‘name‘])){for($i=0;$i<count($_FILES[$field][‘name‘]);$i++){if(0==$_FILES[$field][‘error‘][$i]){$this->upload_file[$this->upload_file_num][‘name‘]=$_FILES[$field][‘name‘][$i];$this->upload_file[$this->upload_file_num][‘type‘]=$_FILES[$field][‘type‘][$i];$this->upload_file[$this->upload_file_num][‘size‘]=$_FILES[$field][‘size‘][$i];$this->upload_file[$this->upload_file_num][‘tmp_name‘]=$_FILES[$field][‘tmp_name‘][$i];$this->upload_file[$this->upload_file_num][‘error‘]=$_FILES[$field][‘error‘][$i];$this->upload_file_num++;}}}else {if(0==$_FILES["$field"][‘error‘]){$this->upload_file[$this->upload_file_num][‘name‘]=$_FILES["$field"][‘name‘];$this->upload_file[$this->upload_file_num][‘type‘]=$_FILES["$field"][‘type‘];$this->upload_file[$this->upload_file_num][‘size‘]=$_FILES["$field"][‘size‘];$this->upload_file[$this->upload_file_num][‘tmp_name‘]=$_FILES["$field"][‘tmp_name‘];$this->upload_file[$this->upload_file_num][‘error‘]=$_FILES["$field"][‘error‘];$this->upload_file_num++;}}}/*** 检查上传文件是构满足指定条件**/public function check($i){if(!empty($this->upload_file[$i][‘name‘])){//检查文件大小if($this->upload_file[$i][‘size‘]>$this->max_size*1024)$this->upload_file[$i][‘error‘]=2;//设置默认服务端文件名$this->upload_file[$i][‘filename‘]=$this->upload_path.$this->upload_file[$i][‘name‘];//获取文件路径信息$file_info=pathinfo($this->upload_file[$i][‘name‘]);//获取文件扩展名$file_ext=$file_info[‘extension‘];//检查文件类型if(!in_array($file_ext,$this->allow_type))$this->upload_file[$i][‘error‘]=5;//需要重命名的if($this->renamed){list($usec, $sec) = explode(" ",microtime());$this->upload_file[$i][‘filename‘]=$sec.substr($usec,2).‘.‘.$file_ext;unset($usec);unset($sec);}//检查文件是否存在if(file_exists($this->upload_file[$i][‘filename‘])){if($this->overwrite){@unlink($this->upload_file[$i][‘filename‘]);}else{$j=0;do{$j++;$temp_file=str_replace(‘.‘.$file_ext,‘(‘.$j.‘).‘.$file_ext,$this->upload_file[$i][‘filename‘]);}while (file_exists($temp_file));$this->upload_file[$i][‘filename‘]=$temp_file;unset($temp_file);unset($j);}}//检查完毕} else $this->upload_file[$i][‘error‘]=6;}/*** 上传文件** @return true*/public function upload(){$upload_msg=‘‘;for($i=0;$i<$this->upload_file_num;$i++){if(!empty($this->upload_file[$i][‘name‘])){//检查文件$this->check($i);if (0==$this->upload_file[$i][‘error‘]){//上传文件if(!@move_uploaded_file($this->upload_file[$i][‘tmp_name‘],$this->upload_file[$i][‘filename‘])){$upload_msg.=‘上传文件‘.$this->upload_file[$i][‘name‘].‘ 出错:‘.$this->error($this->upload_file[$i][‘error‘]).‘!<br>‘;}else{$this->succ_upload_file[]=$this->upload_file[$i][‘filename‘];$upload_msg.=‘上传文件‘.$this->upload_file[$i][‘name‘].‘ 成功了<br>‘;}}else $upload_msg.=‘上传文件‘.$this->upload_file[$i][‘name‘].‘ 出错:‘.$this->error($this->upload_file[$i][‘error‘]).‘!<br>‘;}}echo $upload_msg;}//错误信息public function error($error){switch ($error) {case 1:return ‘文件大小超过php.ini 中 upload_max_filesize 选项限制的值‘;break;case 2:return ‘文件的大小超过了 HTML 表单中 MAX_FILE_SIZE 选项指定的值‘;break;case 3:return ‘文件只有部分被上传‘;break;case 4:return ‘没有文件被上传‘;break;case 5:return ‘这个文件不允许被上传‘;break;case 6:return ‘文件名为空‘;break;default:return ‘出错‘;break;}}//获取成功的数据信息为数组(备用)public function get_succ_file(){return $this->succ_upload_file;}}$upload=new File_upload(‘./upload/‘,‘jpg|bmp|png|gif|jpeg‘);$upload->upload();$t=$upload->get_succ_file();print_r($t);

 

php文件上传(多文件上传)