Home  >  Article  >  Backend Development  >  A method to implement multiple file uploads in php

A method to implement multiple file uploads in php

黄舟
黄舟Original
2018-05-15 13:43:282304browse

When I was working on a project before, there were many ways to implement the file type input in the form to select multiple images. Today I will share with you a method to implement multiple file uploads based on PHP. Friends who need it can refer to it

Previously, when implementing the file type input in the form to select multiple images, I found a way that may not be the best, but it is feasible in personal testing and supports IE7 or above and chrome browsers.

Used normally in the form. Select the multiple attribute of the file

<input type="file" id="image" class="file image hidden" name="image[]" multiple="true">

Then use AjaxFileUpload or other methods to submit

Convert the corresponding named file$file['image'] into json for printing

Normal format

{"name":"7332.png","type":"image\/png","tmp_name":"\/tmp\/phplqppvR","error":0,"size":659}

But the result at this time is

{"name":["7656.png","7718.png"],"type":["image/png","image/png"],"tmp_name":["/tmp/phpDzSovj","/tmp/phpP8kWmT"],"error":[0,0],"size":[357,662]}

All attributes are changed into arrays and arranged in order

At this time, you can use the following code to save the image

if (!isset($_FILES[$field])) {
  return new JsonResponse(array(&#39;errorCode&#39;=>1, &#39;message&#39;=>&#39;请上传文件&#39;));
}
//重新命名$_FILE 存储多个文件上传
$arrayFile = array();
foreach($_FILES[$field] as $key => $value){
  $i = 0;
  if(is_array($value)) {
    foreach ($value as $v) {
      $i++;
      //重命名后重新放入超全局变量_FILE 保证键名唯一 也可直接上传
      $name = $field . &#39;_split_&#39; . $i;
      $_FILES[$name][$key] = $v;
    }
  }
}
//是否上传多文件
if($i > 0){
  for($j = 1; $j <= $i; $j++){ array_push($arrayFile, $field . &#39;_split_&#39; . $j); } }else{ array_push($arrayFile, $field); } //遍历file多个文件 上传 foreach($arrayFile as $file){ if (isset($_FILES[$file]) && $_FILES[$file][&#39;name&#39;]) { //自定义上传方法 具体内容略 $data = $this->uploadFile($file, $path, uniqid());
    if ( isset($data) && !empty($data) ) {
      if(!isset($data[&#39;errors&#39;])){
        //将上传结果存储于$result中 多图片地址使用逗号拼接
        if(isset($result)){
          $result = array(&#39;errorCode&#39;=>0, &#39;message&#39;=>$result[&#39;message&#39;] . &#39;,&#39; . reset($data));
        }else{
          $result = array(&#39;errorCode&#39;=>0, &#39;message&#39;=>reset($data));
        }
      }else{
        //以下为返回错误信息
        if(is_array(reset($data))){
          $message = reset($data)[0];
        }else{
          $message = reset($data);
        }           
        $result = array(&#39;errorCode&#39; => 1, &#39;message&#39; => $message);
      }
    } else {
      $result = array(&#39;errorCode&#39;=>1, &#39;message&#39;=>&#39;上传失败&#39;);
      break;
    }
  } else {
    $result = array(&#39;errorCode&#39;=>1, &#39;message&#39;=>&#39;请上传文件&#39;);
    break;
  }
}
//返回上传结果
return $result;

Summary

The above is the detailed content of A method to implement multiple file uploads in php. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn