Blogger Information
Blog 33
fans 0
comment 0
visits 26119
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
一种多文件上传的方法
非常缪
Original
1003 people have browsed it

之前在实现表单中file类型input选择多图片的时候找到一种方式 也许不是最好的 但亲测可行 且支持ie7以上以及chrome浏览器

在表单中使用正常多文件选择multiple属性

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

然后使用AjaxFileUpload或其他方式提交

将对应命名的file文件 $file[‘image’] 转化为 json打印

正常格式

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

但是此时结果为

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

所有的属性都变为数组 按序排列

这时候可以使用以下代码实现图片保存

if (!isset($_FILES[$field])) {

           return new JsonResponse(array('errorCode'=>1, 'message'=>'请上传文件'));

       }

       //重新命名$_FILE 存储多个文件上传

       $arrayFile = array();

       foreach($_FILES[$field] as $key => $value){

           $i = 0;

           if(is_array($value)) {

               foreach ($value as $v) {

                   $i++;

                   //重命名后重新放入超全局变量_FILE 保证键名唯一 也可直接上传

                   $name = $field . '_split_' . $i;

                   $_FILES[$name][$key] = $v;

               }

           }

       }

       

       //是否上传多文件

       if($i > 0){

           for($j = 1; $j <= $i; $j++){ array_push($arrayFile, $field . '_split_' . $j); } }else{ array_push($arrayFile, $field); } //遍历file多个文件 上传 foreach($arrayFile as $file){ if (isset($_FILES[$file]) && $_FILES[$file]['name']) { //自定义上传方法 具体内容略 $data = $this->uploadFile($file, $path, uniqid());

               if ( isset($data) && !empty($data) ) {

                   if(!isset($data['errors'])){

                       //将上传结果存储于$result中 多图片地址使用逗号拼接

                       if(isset($result)){

                           $result = array('errorCode'=>0, 'message'=>$result['message'] . ',' . reset($data));

                       }else{

                           $result = array('errorCode'=>0, 'message'=>reset($data));

                       }

                   }else{

                       //以下为返回错误信息

                       if(is_array(reset($data))){

                           $message = reset($data)[0];

                       }else{

                           $message = reset($data);

                       }                      

                       $result = array('errorCode' => 1, 'message' => $message);

                   }

               } else {

                   $result = array('errorCode'=>1, 'message'=>'上传失败');

                   break;

               }

           } else {

               $result = array('errorCode'=>1, 'message'=>'请上传文件');

               break;

           }

       }

       //返回上传结果

       return $result;


Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!