网站地图    收藏   

主页 > php专栏 > php类库 >

实现多文件上传php类 - php类库

来源:自学PHP网    时间:2014-11-30 12:53 作者: 阅读:

[导读] 多文件上传是PHP中的一个基础应用,反正PHPer都会遇到的问题,现在就介绍一个功能完善、强大的多文件上传类给大家吧,能用上这个类的地方会很...

实现多文件上传php类

多文件上传是PHP中的一个基础应用,反正PHPer都会遇到的问题,现在就介绍一个功能完善、强大的多文件上传类给大家吧,能用上这个类的地方会很多,代码如下:

  1. <?php 
  2. class Upload{ 
  3.  var $saveName;// 保存名 
  4.  var $savePath;// 保存路径 
  5.  var $fileFormat = array('gif','jpg','doc','application/octet-stream');// 文件格式&MIME限定 
  6.  var $overwrite = 0;// 覆盖模式 
  7.  var $maxSize = 0;// 文件最大字节 
  8.  var $ext;// 文件扩展名 
  9.  var $thumb = 0;// 是否生成缩略图 
  10.  var $thumbWidth = 130;// 缩略图宽 
  11.  var $thumbHeight = 130;// 缩略图高 
  12.  var $thumbPrefix = "_thumb_";// 缩略图前缀 
  13.  var $errno;// 错误代号 
  14.  var $returnArrayarray();// 所有文件的返回信息 
  15.  var $returninfoarray();// 每个文件返回信息 
  16.  
  17. // 构造函数 
  18. // @param $savePath 文件保存路径 
  19. // @param $fileFormat 文件格式限制数组 
  20. // @param $maxSize 文件最大尺寸 
  21. // @param $overwriet 是否覆盖 1 允许覆盖 0 禁止覆盖 
  22.  function Upload($savePath$fileFormat='',$maxSize = 0, $overwrite = 0) { 
  23.   $this->setSavepath($savePath); 
  24.   $this->setFileformat($fileFormat); 
  25.   $this->setMaxsize($maxSize); 
  26.   $this->setOverwrite($overwrite); 
  27.   $this->setThumb($this->thumb, $this->thumbWidth,$this->thumbHeight); 
  28.   $this->errno = 0; 
  29.  } 
  30. // 上传 
  31. // @param $fileInput 网页Form(表单)中input的名称 
  32. // @param $changeName 是否更改文件名 
  33.  function run($fileInput,$changeName = 1){ 
  34.   if(isset($_FILES[$fileInput])){ 
  35.    $fileArr = $_FILES[$fileInput]; 
  36.    if(is_array($fileArr['name'])){//上传同文件域名称多个文件 
  37.     for($i = 0; $i < count($fileArr['name']); $i++){ 
  38.      $ar['tmp_name'] = $fileArr['tmp_name'][$i]; 
  39.      $ar['name'] = $fileArr['name'][$i]; 
  40.      $ar['type'] = $fileArr['type'][$i]; 
  41.      $ar['size'] = $fileArr['size'][$i]; 
  42.      $ar['error'] = $fileArr['error'][$i]; 
  43.      $this->getExt($ar['name']);//取得扩展名,赋给$this->ext,下次循环会更新 
  44.      $this->setSavename($changeName == 1 ? '' : $ar['name']);//设置保存文件名 
  45.      if($this->copyfile($ar)){ 
  46.       $this->returnArray[] =  $this->returninfo; 
  47.      }else
  48.       $this->returninfo['error'] = $this->errmsg(); 
  49.       $this->returnArray[] =  $this->returninfo; 
  50.      } 
  51.     } 
  52.     return $this->errno ?  false :  true; 
  53.    }else{//上传单个文件 
  54.     $this->getExt($fileArr['name']);//取得扩展名 
  55.     $this->setSavename($changeName == 1 ? '' : $fileArr['name']);//设置保存文件名 
  56.     if($this->copyfile($fileArr)){ 
  57.      $this->returnArray[] =  $this->returninfo; 
  58.     }else
  59.      $this->returninfo['error'] = $this->errmsg(); 
  60.      $this->returnArray[] =  $this->returninfo; 
  61.     } 
  62.     return $this->errno ?  false :  true; 
  63.    } 
  64.    return false; 
  65.   }else
  66.    $this->errno = 10; 
  67.    return false; 
  68.   } 
  69.  } 
  70. // 单个文件上传 
  71. // @param $fileArray 文件信息数组 
  72.  function copyfile($fileArray){ 
  73.   $this->returninfo = array(); 
  74.   // 返回信息 
  75.   $this->returninfo['name'] = $fileArray['name']; 
  76.   $this->returninfo['md5'] = @md5_file($fileArray['tmp_name']); 
  77.   $this->returninfo['saveName'] = $this->saveName; 
  78.   $this->returninfo['size'] = number_format( ($fileArray['size'])/1024 , 0, '.'' ');//以KB为单位 
  79.   $this->returninfo['type'] = $fileArray['type']; 
  80.   // 检查文件格式 
  81.   if (!$this->validateFormat()){ 
  82.    $this->errno = 11; 
  83.    return false; 
  84.   } 
  85.   // 检查目录是否可写 
  86.   if(!@is_writable($this->savePath)){ 
  87.    $this->errno = 12; 
  88.    return false; 
  89.   } 
  90.   // 如果不允许覆盖,检查文件是否已经存在 
  91.   //if($this->overwrite == 0 && @file_exists($this->savePath.$fileArray['name'])){ 
  92.   // $this->errno = 13; 
  93.   // return false; 
  94.   /

自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习

京ICP备14009008号-1@版权所有www.zixuephp.com

网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com

添加评论