您好,欢迎访问一九零五行业门户网

经典php批量上传源码_PHP教程

这是从一个源码包下载下来的,包括上传页面到类,方法简单,只要把下面文件保存成相同的文件名就可以简单实现文件批量上传的功能了。
 代码如下 复制代码
html
无标题文档
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);
?>
upfiles.class.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; $i    if($this->setfiles($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; $i     if($this->setfiles($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;
 }
 }
?>
http://www.bkjia.com/phpjc/631702.htmlwww.bkjia.comtruehttp://www.bkjia.com/phpjc/631702.htmltecharticle这是从一个源码包下载下来的,包括上传页面到类,方法简单,只要把下面文件保存成相同的文件名就可以简单实现文件批量上传的功能了...
其它类似信息

推荐信息