首页 > 语言 > PHP > 正文

php文件上传类,支持单个或者多个文件上传

2024-09-04 11:44:10
字体:
来源:转载
供稿:网友

这个文件上传类可以实现多个文件或单个文件进行上传了,下面小编来给各位推荐一个不错的例子,实例代码如下:

  1. <!doctype html public "-//w3c//dtd xhtml 1.0 transitional//en" "http://www.w3.org/tr/xhtml1/dtd/xhtml1-transitional.dtd"
  2. <html xmlns="http://www.Vevb.com/1999/xhtml"
  3. <head> 
  4. <meta http-equiv="content-type" content="text/html; charset=gb2312" /> 
  5. <title>无标题文档</title> 
  6. </head> 
  7.  
  8. <body> 
  9. <?php 
  10. //php文件上传类(该类支持单个或者多个文件上传) 
  11.  /** 
  12.  * 类名:upfile 
  13.  * 作用:处理文件上传 
  14.  * 说明,该类处理单个或者多个文件上传,使用该类时,只需要实列化该类 
  15.  * 例: 
  16.  * $up = upfile() 
  17.  * $up->update_file($_file['filename']) 
  18.  * 
  19.  * $up->update_file   函数返回一个数组,如果是多文件上传,则为多维数据。 
  20.  * 数组的内容: 
  21.  * $fileinfo['file_size']   上传文件的大小 
  22.  * $fileinfo['file_suffix'] 上传文件的类型 
  23.  * $fileinfo['file_name']   上传文件的名字 
  24.  * $fileinfo['error']     上传文件产生的错误 
  25.  * 
  26.  
  27.  */ 
  28. class upfile { 
  29.  public $fcount = 1;           //上传文件的数量 
  30.  public $ftype  = array('jpg','jpeg','gif','png');  //文件格式 
  31.  public $fsize  = 1024;          //文件大小单位kb 
  32.  public $fdir   = 'www.111cn.net/';         //文件存放目录 
  33.  public $errormsg = '';          //产生的临时错误信息 
  34.  
  35.  /** 
  36.   *函数名:get_tmp_file($putfile) 
  37.   *作用:取得上传的临时文件名 
  38.   *@param array $putfile 
  39.   *@return string $upimg 返回临时文件名 
  40.   */ 
  41.   function get_tmp_file($putfile){ 
  42.   if($this->fcount == 1){ 
  43.    $tmpfile = $putfile['tmp_name']; 
  44.   }else
  45.    for($i=0;$i<$this->fcount;$i++){ 
  46.     $tmpfile[] = $putfile['tmp_name'][$i]; 
  47.    } 
  48.   } 
  49.   return $tmpfile
  50.   } 
  51.  
  52.  /** 
  53.   *函数名:get_suffix($filename) 
  54.   *作用:取得文件的后缀名 
  55.   *@param file $filename 
  56.   *@return string $suffixname 返回后缀名 
  57.   */ 
  58.   function get_suffix($filename){ 
  59.   $link = pathinfo($filename); 
  60.      $suffixname = strtolower($link['extension']); 
  61.      return $suffixname
  62.   } 
  63.  
  64.  /** 
  65.   *验证文件大小 
  66.   *@author 赵红健 
  67.   *@param $filesize 
  68.   *@return booln 
  69.   */ 
  70.  function check_file_size($filesize){ 
  71.   $this->errormsg = ''
  72.   if($filesize/1000 > $this->fsize){ 
  73.    $this->errormsg = '警告:文件超出大小!'
  74.    return false; 
  75.   }else
  76.    return true; 
  77.   } 
  78.  } 
  79.  
  80.  /** 
  81.   *验证文件类型是否合法 
  82.   *@author 赵红健 
  83.   *@param $filesuffix 
  84.   *@return booln 
  85.   */ 
  86.  function check_file_suffix($filesuffix){ 
  87.    $this->errormsg = ''
  88.    if(!in_array($filesuffix,$this->ftype)){ 
  89.     $this->errormsg = '警告:文件类型不在允许范围内!'
  90.     return false; 
  91.    }else
  92.     return true; 
  93.    } 
  94.  } 
  95.  
  96.  /** 
  97.   *移动临时文件 
  98.   *@author 赵红健 
  99.   *@param $filesuffix 
  100.   *@return booln 
  101.   */ 
  102.  function move_temp_file($tmpfile,$targetfile){ 
  103.    $this->errormsg = ''
  104.    if(!move_uploaded_file($tmpfile,$targetfile)){ 
  105.     $this->errormsg = '警告:文件移动失败!'
  106.     return false; 
  107.    }else
  108.     return true; 
  109.    } 
  110.  } 
  111.  
  112.  
  113.      /** 
  114.    *函数名:update_file($putfile) 
  115.    *作用:上传文件 
  116.    *@param array $putfile 
  117.    *@return array 文件信息 
  118.    */ 
  119.     function update_file($putfile){ 
  120.    $tmpfile = $this->get_tmp_file($putfile); 
  121.    if(!file_exists($this->fdir)){ 
  122.        $this->errormsg[] = '错误:目录'.$this->fdir.'不存在'
  123.     return $this->errormsg; 
  124.    } 
  125.    $this->fdir = substr($this->fdir,strlen($this->fdir)-1,1)=='/'?$this->fdir:$this->fdir.'/'
  126.    if(!is_array($putfile['size'])){ 
  127.     $fileinfo['file_size'] = $putfile['size']; 
  128.     if(!$this->check_file_size($fileinfo['file_size'])){ 
  129.      $fileinfo['error'] = $this->errormsg; 
  130.      return $fileinfo
  131.     } 
  132.     $fileinfo['file_suffix'] = $this->get_suffix($putfile['name']); 
  133.     if(!$this->check_file_suffix($fileinfo['file_suffix'])){ 
  134.      $fileinfo['error'] = $this->errormsg; 
  135.      return $fileinfo
  136.     } 
  137.  
  138.     $fileinfo['file_name']   = date('ymdhms').'.'.$fileinfo['file_suffix']; 
  139.     if(!$this->move_temp_file($tmpfile,$this->fdir.$fileinfo['file_name'])){ 
  140.      $fileinfo['error'] = $this->errormsg; 
  141.      return $fileinfo
  142.     } 
  143.     return $fileinfo
  144.  
  145.    }else
  146.     for($i=0;$i<$this->fcount;$i++){ 
  147.      $fileinfo[$i]['file_size'] = $putfile['size'][$i]; 
  148.      if(!$this->check_file_size($fileinfo[$i]['file_size'])){ 
  149.       $fileinfo[$i]['error'] = $this->errormsg; 
  150.       continue
  151.      } 
  152.  
  153.      $fileinfo[$i]['file_suffix'] = $this->get_suffix($putfile['name'][$i]); 
  154.      if(!$this->check_file_suffix($fileinfo[$i]['file_suffix'])){ 
  155.       $fileinfo[$i]['error'] = $this->errormsg; 
  156.       continue
  157.      } 
  158.  
  159.      $fileinfo[$i]['file_name']  = date('ymdhms').rand().'.'.$fileinfo[$i]['file_suffix']; 
  160.      if(!$this->move_temp_file($tmpfile[$i],$this->fdir.$fileinfo[$i]['file_name'])){ 
  161.       $fileinfo[$i]['error'] = $this->errormsg; 
  162.       continue;//开源代码Vevb.com 
  163.      } 
  164.      } 
  165.     return $fileinfo
  166.    } 
  167.     } 
  168.  
  169. ?> 
  170. </body> 
  171. </html> 

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表