PHP 实现一种多文件上传的方法
之前在实现表单中file类型input选择多图片的时候找到一种方式也许不是最好的但亲测可行且支持ie7以上以及chrome浏览器
在表单中使用正常多文件选择multiple属性
然后使用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])){ returnnewJsonResponse(array('errorCode'=>1,'message'=>'请上传文件')); } //重新命名$_FILE存储多个文件上传 $arrayFile=array(); foreach($_FILES[$field]as$key=>$value){ $i=0; if(is_array($value)){ foreach($valueas$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($arrayFileas$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;
总结
以上所述是小编给大家介绍的PHP实现一种多文件上传的方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对毛票票网站的支持!