首页 > php教程 > php手册 > 经典php批量上传源码

经典php批量上传源码

WBOY
发布: 2016-05-25 16:56:36
原创
1366 人浏览过
这是从一个源码包下载下来的,包括上传页面到类,方法简单,只要把下面文件保存成相同的文件名就可以简单实现文件批量上传的功能了。
 代码如下 复制代码

html
gt;



无文档标题



<输入类型=“文件”名称=“spic[]”id=“v1”/>

<输入类型=“文件”名称=“ spic[]" id="v2" //>


>
<输入类型=“文件”名称=“spic[]”id=“v4”/>
>
<输入类型=“文件”名称=“spic[]” id="v5" //>

<输入类型="file" name="spic[]" id="v6" //>

< ;输入类型=“文件”名称=“spic[]”id=“v7”/>
>
<输入类型=“文件”名称=“spic[]”id=“v8” " />





uploade.php文件

//print_r($_FILES['spic']);
header('Content-Type:text/html;charset=utf-8');
//if(@$_FILES['spic'])echo "dddddddddd";;
include('upFiles.css.php');
$upfile = new UploadFiles(array('filepath'= >'./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 上传类

class UploadFiles{

 private $maxsize = '1000000'; //允许上传文件最大长度
 private $allowtype = array('jpg','png','gif','jpeg');//允许上传文件类型
 private $israndfile = true;//是否随机文件名
 private $filepath;//上传路径
 private $originName;//上传的源文件
 private $tmpfileName;//临时文件名
 private $newfileName;//新文件名
 private $fileSize;//文件大小
 private $fileType;//文件类型
 private $errorNum = 0;//错误号
 private $errorMessg = array();//错误消息
  //对成员初始化
  function __construct($options = array()){
  foreach($options as $key=>$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{
     $错误[] = $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);
    返回 false;
   }其他{
    return true;
   }
  }else{
   return false;
  }
 }

 //上传错误后返回的消息
 function gteerror(){
    $err = $this->errorMessg;
  return $err;
 }
 }

 

?>



本文地址:

转载随意,但请附上文章地址:-)

相关标签:
来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
热门推荐
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板