Home > Article > Backend Development > A method to implement multiple file uploads in php
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('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;
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!