首页 > 语言 > PHP > 正文

php文件上传代码(支持文件批量上传)

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

本款文件上传类,默认是上传单文件的,我们只要修改$inputname ='files'为你的表单名就可以方便的实现批量文件上传了,$savename = ''保存文件名, $alowexts = array()设置允许上传的类型,$savepath = ''保存路径。

  1. */ 
  2. class upload 
  3.  public $savepath
  4.  public $files
  5.  private $error
  6.  function __construct($inputname ='files'$savepath = ''$savename = ''$alowexts = array(),$maxsize = 1024000) 
  7.  { 
  8.   if(!$alowexts)$alowexts=explode('|',upload_ftype); 
  9.   $file_array=array(); 
  10.   $savepath=str_replace('','/',$savepath); 
  11.   $savename=preg_replace('/[^a-z0-9_]+/i','',$savename); 
  12.   $this->savepath=substr($savepath,-1)=='/'?$savepath:$savepath.'/'//路径名以/结尾 
  13.   if(!make_dir($this->savepath)) 
  14.   { 
  15.    $this->error=8; 
  16.    $this->error(); 
  17.   } 
  18.   //exit($this->savepath); 
  19.   if(!is_writeable($this->savepath)) 
  20.   { 
  21.    $this->error=9; 
  22.    $this->error(); 
  23.   } 
  24.   if(sizeof($_files[$inputname]['error'])>10) 
  25.   { 
  26.    $this->error=13; 
  27.    $this->error(); 
  28.   } 
  29.   $max=sizeof($_files[$inputname]['error'])-1; 
  30.   //exit($this->savepath.$savename); 
  31.   foreach($_files[$inputname]['error'as $key => $error
  32.   { 
  33.    if($error==upload_err_ok) //批量上传 
  34.    { 
  35.     $savename=$savename?$savename:date('ymdims').mt_rand(10000,99999);  
  36.     $fileext=strtolower(get_fileext($_files[$inputname]['name'][$key])); 
  37.     $savename=$savename.'.'.$fileext
  38.     $tmp_name=$_files[$inputname]['tmp_name'][$key]; 
  39.     $filesize=$_files[$inputname]['size'][$key]; 
  40.     if(!in_array($fileext,$alowexts)) 
  41.     { 
  42.      $this->error=10; 
  43.      $this->error(); 
  44.     } 
  45.     if($filesize>$maxsize
  46.     { 
  47.      $this->error=11; 
  48.      $this->error(); 
  49.     } 
  50.     if(!$this->isuploadedfile($tmp_name)) 
  51.     { 
  52.      $this->error=12; 
  53.      $this->error(); 
  54.     } 
  55.     if(move_uploaded_file($tmp_name,$this->savepath.$savename) || @copy($tmp_name,$this->savepath.$savename)) 
  56.     { 
  57.      //exit($this->savepath.$savename); 
  58.      @chmod($savename, 0644); 
  59.      @unlink($tmp_name); 
  60.      $file_array[]=$this->savepath.$savename;      
  61.     } 
  62.    } 
  63.    else 
  64.    { 
  65.     $this->error=$error
  66.     $this->error(); 
  67.    } 
  68.    unset($savename); 
  69.   } 
  70.   $this->files=$file_array
  71.   return true; 
  72.  } 
  73.  function isuploadedfile($file//去掉系统自带的反斜线 
  74.  { 
  75.   return (is_uploaded_file($file) || is_uploaded_file(str_replace('/','',$file)));  
  76.  } 
  77.  function error() 
  78.  { 
  79.   $upload_error=array(0 => '文件上传成功 !'
  80.        1 => '上传的文件超过了 php.ini 中 upload_max_filesize 选项限制的值 !'
  81.        2 => '上传文件的大小超过了 html 表单中 max_file_size 选项指定的值 !'
  82.        3 => '文件只有部分被上传 !'
  83.        4 => '没有文件被上传 !'
  84.        5 => '未知错误!'
  85.        6 => '找不到临时文件夹。 !'
  86.        7 => '文件写入临时文件夹失败 !'
  87.        8 => '附件目录创建失败 !'
  88.        9 => '附件目录没有写入权限 !'
  89.        10 => '不允许上传该类型文件 !'
  90.        11 => '文件超过了管理员限定的大小 !'
  91.        12 => '非法上传文件 !'
  92.        13 => '最多可同时上传10个文件 !' 
  93.        ); 
  94.   showmsg($upload_error[$this->error]); 
  95.  } 
  96. //使用方法 
  97. new upload(); 

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