PHP多文件上传类实例
本文实例讲述了PHP多文件上传类。分享给大家供大家参考。具体如下:
<?php /* PHP多文件上传类 修改:Linvo2008-2-15 */ classmore_file_upload{ constFILE_PATH='../upfileclass/uploadfile/'; var$file_type; var$file_type_array; var$file_type_real_array; var$file_type_string; var$file_name; var$file_size; var$file_tmp_name; var$file_error; var$handledate; var$totalsize=0; function__construct($file_name,$file_error,$file_size,$file_tmp_name,$file_type){ $this->handledate=date('m-d-Y'); if(!empty($file_name)){ $this->$file_name=$file_name; $this->$file_error=$file_error; $this->$file_size=$file_size; $this->$file_tmp_name=$file_tmp_name; $this->$file_type=$file_type; $this->$file_type_array=array('/','image/gif','image/jpg','image/jpeg','image/pjpeg','image/png'); $this->$file_type_real_array=array(0.1,'jpg'=>74707370,'gif'=>7173,'bmp'=>6677,'png'=>807871); $this->show_execute_message($this->$file_error,$this->$file_name,$this->$file_type,$this->$file_size); } } function__destruct(){ $this->$file_name=NULL; $this->$file_error=NULL; $this->$file_size=NULL; $this->$file_tmp_name=NULL; $this->$file_type=NULL; $this->$totalsize=0; } functionshow_execute_message($smfileerror,$smfilename,$smfiletype,$smfilesize){ if($smfileerror>0){ switch($smfileerror){ case1:$smfilemessage='<strong>文件超过服务器的约定大小!</strong>';break; case2:$smfilemessage='<strong>文件超过指定的文件大小!</strong>';break; case3:$smfilemessage='<strong>文件只上传了部分!</strong>';break; case4:echo"$this->$file_name".'文件上传失败!<br/>';break; } self::__destruct(); }else{ $smfiletypeflag=array_search($smfiletype,$this->$file_type_array); //进行真实格式验证 if($smfiletypeflag!=false){ $file=fopen($this->$file_tmp_name,"rb"); $bin=fread(file,10); fclose($file); $strInfo=@unpack("c10chars",$bin); $typeCode=intval($strInfo['chars1'].$strInfo['chars2']); $smfiletypeflag=array_search($typeCode,$this->$file_type_real_array); if($smfiletypeflag==false){//判断是否是png图片 $typeCode=intval($strInfo['chars2'].$strInfo['chars3'].$strInfo['chars4']); $smfiletypeflag=array_search($typeCode,$this->$file_type_real_array); if($smfiletypeflag==false){//判断是否是jpg图片 $$typeCode=intval($strInfo['chars7'].$strInfo['chars8'].$strInfo['chars9'].$strInfo['chars10']); $smfiletypeflag=array_search($typeCode,$this->$file_type_real_array); } } } if($smfiletypeflag==false){ $smfilemessage='<strong>文件类型不对,请核实!</strong>'; self::__destruct(); }else{ $resflag=$$this->move_file($$this->$file_tmp_name,$this->$file_name); if($resflag==1){ $smfilemessage='文件上传成功!'; $this->totalsize+= intval($smfilesize); self::__destruct(); }else{ $smfilemessage='<strong>文件上传失败!</strong>'; self::__destruct(); } } } $$smfilesizeformat=$this->size_BKM($smfilesize); echo'<tr> <tdalign="left">'.$smfilename.'</td> <tdalign="center">'.$smfiletype.'</td> <tdalign="center">'.$smfilesizeformat.'</td> <tdalign="center">'.smfilemessage.'</td> </tr>'; } functionmove_file($mvfiletmp,$mvfilename){//移动文件 $mvfilenamearr=explode('.',basename($mvfilename)); $mvfilenamearr[0]=$this->rand_string(); $mvfilename=implode('.',$mvfilenamearr); if(is_uploaded_file($mvfiletmp)){ $uploadfile=self::FILE_PATH."$mvfilename"; $result=move_uploaded_file($mvfiletmp,$uploadfile); return$result; } } functionrand_string(){ $string=md5(uniqid(rand().microtime())); return$string; } functionsize_BKM($size){//B/KB/MB单位转换 if($size<1024) { $size_BKM=(string)$size."B"; } elseif($size<(1024*1024)) { $size_BKM=number_format((double)($size/1024),1)."KB"; }else { $size_BKM=number_format((double)($size/(1024*1024)),1)."MB"; } return$size_BKM; } } ?>
希望本文所述对大家的php程序设计有所帮助。