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实现一种多文件上传的方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对毛票票网站的支持!