PHP中怎么实现一个多文件上传类
创始人
2024-12-10 12:03:50
0次

1、upFiles.css.php 文件

$val){
  $key = strtolower($key);
  //查看传进来的数组里下标是否与成员属性相同
  //print_r(array_keys(get_class_vars(get_class($this))));
  if(!in_array($key,array_keys(get_class_vars(get_class($this))))){
  continue;
  }else{
  $this->setOption($key,$val);
  }
 }
 }
 private function setOption($key,$val){
   $this->$key = $val;
 //echo $this->errorNum."
";  }  //检查文件上传路径  private function checkfilePath(){  //echo $this->filepath;  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 getError(){  $str = "上传文件{$this->originName}出错---";  switch($this->errorNum){   case 4; $str .= "没有文件被上传";break;   case 3; $str .= "文件只被部分上传";break;   case 2; $str .= "超过文件表单允许大小";break;   case 1; $str .= "超过php.ini中允许大小";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 checkfileType(){  //echo $this->fileType;  if(!in_array(strtolower($this->fileType),$this->allowtype)){  $this->setOption('errorNum','-1');   return false;  }else{   return true;  }  }  //检查文件大小  private function checkfileSize(){  if($this->fileSize > $this->maxsize){   $this->setOption('errorNum','-2');   return false;  }else{   return true;  }  }  //处理随机文件名称  private function prorandFile(){  $ch = $this->israndfile;  if($ch == 'true'){   return true;  }else{   return false;  }  }  //  private function setFiles($name="",$tmp_name="",$size="",$error=""){  //检查上传路径  if(!$this->checkfilePath()){   //$this->errorMessg = $this->getError();   return false;  }  //echo $error."
";  if($error){  $this->setOption('errorNum',$error);   return false;  }  $arrstr  = explode('.',$name);  $type   = end($arrstr);  $this->setOption('originName',$name);  $this->setOption('fileSize',$size);  $this->setOption('fileType',$type);  $this->setOption('tmpfileName',$tmp_name);  return true;  }  //检查是否有文件上传  function checkFile($formname){  if(!@$_FILES[$formname]){   $this->setOption('errorNum',4);   return false;  }else{   return true;  }  }  //上传文件  function uploadeFile($formname){  if(!$this->checkFile($formname)){   $this->errorMessg = $this->getError();   return false;  }  $return  = true;  $name   = @$_FILES[$formname]['name'];  $tmp_name = @$_FILES[$formname]['tmp_name'];  $size   = @$_FILES[$formname]['size'];  $error  = @$_FILES[$formname]['error'];  //$type   = $_FILES[$formname]['type'];  if(is_array($name)){   $errors = array();   for($i=0; $isetFiles($name[$i],$tmp_name[$i],$size[$i],$error[$i])){    if(!$this->checkfileSize() || !$this->checkfileType()){    $errors[] = $this->getError();    $return = false;    }   }else{    $errors[] = $this->getError();    $return = false;   }   if(!$return) $this->setFiles();   }   if($return){   $newfileN = array();   for($i=0; $isetFiles($name[$i],$tmp_name[$i],$size[$i],$error[$i])){    if(!$this->copyFile()){     $errors[] = $this->getError();     $return = false;    }else{     $newfileN[] = $this->newfileName;    }    }    $this->newfileName = $newfileN;   }   }   //print_r($errors);   $this->errorMessg = $errors;   //echo $errors;   return $return;  }else{   if($this->setFiles($name,$tmp_name,$size,$error)){   $return = true;   if($error) var_dump($error);   if($this->checkfileSize() && $this->checkfileType()){   }else{    $return = false;   }   }else{   $return = false;   }   if(!$return){   $this->errorMessg = $this->getError();   }   return $return;  }  }  //获取上传后的文件名  function getnewFile(){   return $this->newfileName;  }  //把文件拷贝到指定的路径  function copyFile(){  $filepath = rtrim($this->filepath,'/')."/";  if(!$this->errorNum){   if($this->prorandFile()){    $this->newfileName = date('Ymdhis').rand(1000,9999).".".$this->fileType;   }else{    $this->newfileName = $this->originName;   }   if(!move_uploaded_file($this->tmpfileName,$filepath.$this->newfileName)){   $this->setOption('errorNum',-3);   return false;   }else{   return true;   }  }else{   return false;  }  }  //上传错误后返回的消息  function gteerror(){   $err = $this->errorMessg;  return $err;  }  } ?>

2、使用方法

uploade.php 文件:

'./upload','allowtype'=>array('php','bmp','gif','jpg','png'),'israndfile'=>true,'maxsize'=>'1000000'));
if($upfile ->uploadeFile('spic')){
 $arrfile = $upfile ->getnewFile();
 foreach($arrfile as $v){
 echo $v,"
";  }  echo "上传成功!"; }else{  $err = $upfile ->gteerror();  if(is_array($err)){  foreach($err as $v1){   echo $v1,"
";  }  }else{  echo $err;  }  //var_dump($err); } //var_dump($upfile); ?>

HTML 文件:





无标题文档

function Check(){
 //alert('dddd');
 for(i=1; i<9; i++){
 if(document.getElementById('v'+i).value == ''){
  document.getElementById('v'+i).name = 'uu';
 }
 }
}












相关内容

热门资讯

空调连续工作多久需要停机休息 空调连续工作的时间取决于多个因素,包括空调的型号、功率、使用环境和维护情况等。一般来说,空调可以连续...
空调哪个符号是除湿的 空调除湿功能通常用一个水滴形状的符号表示。不同品牌和型号的空调遥控器可能会有所差异,但一般来说,除湿...
格力空调多长时间加一次氟利昂 1、一般情况下,空调对氟利昂的使用量是非常小的,所以在空调使用了四年左右的时候再考虑加也没问题。2、...
空调用多长时间需要加氟一次 一般情况下是五年。当出现以下这几种情况时,空调才需要加氟。1、空调的室内机和室外机各有两个接口,当接...
格调生活·C标思享荟:卡萨帝在... 9月12日的郑州龙湖金融岛,夜风轻拂,灯光璀璨。“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑...
品牌价值破千亿、高端份额持续领... 9月12日,“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑州站”在郑州龙湖金融岛举办。2026...
空调主板坏了修800还是换新的 空调主板坏了是修还是换新,需要考虑多个因素,以下是一些建议:1. 维修成本:如果维修费用较低,比如 ...
空调开多久需要休息多长时间 问题:空调开多久需要休息多长时间回答:1、在使用空调的过程中,一般空调开7~8个小时左右需要休息2~...
中央空调多长时间清洗一次 1、一般空调开机前清洗一次即可,空调开机中间时段再清洗一次,空调关机时清洗一次,这样比较合理。2、空...
中央空调氟利昂多久加一次 看空调制热和制冷程度,很多人的观点认为氟利昂必须一年放一次,其实这个观点是错误的,理解上面有点偏差,...