加入收藏 | 设为首页 | 会员中心 | 我要投稿 云计算网_泰州站长网 (http://www.0523zz.com/)- 视觉智能、AI应用、CDN、行业物联网、智能数字人!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

PHP多文件上传理解概括

发布时间:2022-07-18 14:16:19 所属栏目:PHP教程 来源:互联网
导读:上传文件HTML的输入标签FILE类型中的名称后要加[],作用是在HTML中向PHP建立数组,比如名称为pictures,多文件引用名称则为pictures[],实例代码如下: form action=upload.php method=post enctype=multipart/form-data p input type=file name=pictures[] /br /
  上传文件HTML的输入标签FILE类型中的名称后要加[],作用是在HTML中向PHP建立数组,比如名称为pictures,多文件引用名称则为pictures[],实例代码如下:
 
  <form action=”upload.php” method=”post” enctype=”multipart/form-data”>
  <p>
  <input type=”file” name=”pictures[]” /><br />
   </p>
  </form>
  手册中实例,选择文件后点击上传,代码如下:
 
  <?php print_r($_FILES); ?>
 
  查看源文件,代码如下:
 
  Array
  (
  [pictures] => Array
  (
  [name] => Array
  (
  [0] => file1.txt
  [1] => file2.txt
  [2] => file3.txt
  )
   )
  [size] => Array
  (
  [0] => 94289
  [1] => 65536
  [2] => 102400
  )
  )
  )
  假设名为 /file1.txt和 /file2.txt 的文件被提交,则 $_FILES['pictures']['name'][0] 的值将是 file1.txt,而 $_FILES['pictures']['name'][1] 的值将是 file2.txt。类似的,$_FILES['file2.txt']['size'][0] 将包含文件 file1.txt 的大小,有了上面信息了我们要实现多文件上传就简单了,代码如下:
 
  <?php
   
  class upload {  
  public $up_ext=array(), $up_max=5210, $up_dir;  
  private $up_name, $up_rename=true, $up_num=0, $up_files=array(), $up_ret=array();
   
  function __construct($name, $ext=array(), $rename=true) {  
  if (!emptyempty($name)) {  
  $this->up_name = $name;  
  !emptyempty($ext) && $this->up_ext = $ext;  
  $this->up_rename = $rename;  
  $this->up_dir = website_dirroot.  
  $globals['cfg_upload_path'];  
  $this->initupload();  
  } else {  
  exit('upload文件域名称为空,初始化失败!');  
  }  
  }
   
  private function initupload() {  
  if (is_array($_files[$this->up_name])) {  
  $up_arr = count($_files[$this->up_name]);  
  $up_all = count($_files[$this->up_name], 1);  
  $up_cnt = ($up_all - $up_arr) / $up_arr;  
  for ($i = 0; $i < $up_cnt; $i ++) {  
  if ($_files[$this->up_name]['error'][$i] != 4) {  
  $this->up_files[] = array(  
  'tmp_name' => $_files[$this->up_name]['tmp_name'][$i],  
  'name' => $_files[$this->up_name]['name'][$i],  
  'type' => $_files[$this->up_name]['type'][$i],  
  'size' => $_files[$this->up_name]['size'][$i],  
  'error' => $_files[$this->up_name]['error'][$i]  
  );  
  }  
  }  
  $this->up_num = count($this->up_files);  
  } else {  
  if (isset($_files[$this->up_name])) {  
  $this->up_files = array(  
  'tmp_name' => $_files[$this->up_name]['tmp_name'],  
   $this->chkupload();  
  }
   
  private function chkupload() {  
  if (emptyempty($this->up_ext)) {  
  $up_mime = array('image/wbmp', 'image/bmp', 'image/gif', 'image/pjpeg', 'image/x-png');  
  foreach ($this->up_files as $up_file) {  
  $up_allw = false;  
  foreach ($up_mime as $mime) {  
  if ($up_file['type'] == $mime) {  
  $up_allw = true; break;  
  }  
  }  
  !$up_allw && exit('不允许上传'.$up_file['type'].'格式的文件!');
   
  if ($up_file['size'] / 1024 > $this->up_max) {  
  exit('不允许上传大于 '.$this->up_max.'k 的文件!');  
  }  
  }  
  } else {  
  foreach ($this->up_files as $up_file) {  
  $up_ext = end(explode('.', $up_file['name']));
   
  $up_allw = false;  
  foreach ($this->up_ext as $ext) {  
  if ($up_ext == $ext) {  
  $up_allw = true; break;  
  }  
  }  
  !$up_allw && exit('不允许上传.'.$up_ext.'格式的文件!');
   
  if ($up_file['size'] / 1024 > $this->up_max) {  
  exit('不允许上传大于 '.$this->up_max.'k 的文件!');  
  }  
  }  

(编辑:云计算网_泰州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读