PHP 实现一种多文件上传的方法


Posted in Javascript onSeptember 20, 2017

之前在实现表单中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;

总结

以上所述是小编给大家介绍的PHP 实现一种多文件上传的方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
setInterval 和 setTimeout会产生内存溢出
Feb 15 Javascript
JavaScript函数获取事件源的小例子
May 14 Javascript
extjs 如何给column 加上提示
Jul 29 Javascript
javascript中with()方法的语法格式及使用
Aug 04 Javascript
js分页工具实例
Jan 28 Javascript
JS封装的自动创建表格的实现代码
Jun 15 Javascript
Node.js下自定义错误类型详解
Oct 17 Javascript
关于JavaScript中forEach和each用法浅析
Jul 27 Javascript
Vue.js移动端左滑删除组件的实现代码
Sep 08 Javascript
VUE2.0+ElementUI2.0表格el-table循环动态列渲染的写法详解
Nov 30 Javascript
详解javascript函数写法大全
Mar 25 Javascript
js实现移动端轮播图滑动切换
Dec 21 Javascript
使用原生js+canvas实现模拟心电图的实例
Sep 20 #Javascript
Vue.js项目模板搭建图文教程
Sep 20 #Javascript
从对象列表中获取一个对象的方法,依据关键字和值
Sep 20 #Javascript
Node.js+jade+mongodb+mongoose实现爬虫分离入库与生成静态文件的方法
Sep 20 #Javascript
jquery 一键复制到剪切板的实例
Sep 20 #jQuery
angularjs利用directive实现移动端自定义软键盘的示例
Sep 20 #Javascript
集合Bootstrap自定义confirm提示效果
Sep 19 #Javascript
You might like
PHP6 mysql连接方式说明
2009/02/09 PHP
linux下删除7天前日志的代码(php+shell)
2011/01/02 PHP
PHP数据过滤的方法
2013/10/30 PHP
php实现微信公众号主动推送消息
2015/12/31 PHP
PHP基于curl实现模拟微信浏览器打开微信链接的方法示例
2019/02/15 PHP
JSON 客户端和服务器端的格式转换
2009/08/27 Javascript
javascript KeyDown、KeyPress和KeyUp事件的区别与联系
2009/12/03 Javascript
基于jquery的inputlimiter 实现字数限制功能
2010/05/30 Javascript
js简单的点击返回顶部效果实现方法
2015/04/10 Javascript
jQuery Validate验证框架经典大全
2015/09/23 Javascript
JavaScript预解析及相关技巧分析
2016/04/21 Javascript
JavaScript判断微信浏览器实例代码
2016/06/13 Javascript
基于jQuery实现表格的查看修改删除
2016/08/01 Javascript
JavaScript面试题大全(推荐)
2016/09/22 Javascript
Bootstrap Table使用方法解析
2016/10/19 Javascript
vue.js声明式渲染和条件与循环基础知识
2017/07/31 Javascript
vue实现在线翻译功能
2019/09/27 Javascript
原生js拖拽实现图形伸缩效果
2020/02/10 Javascript
python列表操作使用示例分享
2014/02/21 Python
python通过pil为png图片填充上背景颜色的方法
2015/03/17 Python
python读写二进制文件的方法
2015/05/09 Python
Python for Informatics 第11章之正则表达式(四)
2016/04/21 Python
python进阶_浅谈面向对象进阶
2017/08/17 Python
解决pytorch-yolov3 train 报错的问题
2020/02/18 Python
Python关于反射的实例代码分享
2020/02/20 Python
Python中私有属性的定义方式
2020/03/05 Python
浅析Python __name__ 是什么
2020/07/07 Python
浅谈three.js中的needsUpdate的应用
2012/11/12 HTML / CSS
Html5调用手机摄像头并实现人脸识别的实现
2018/12/21 HTML / CSS
联想西班牙官网:Lenovo西班牙
2018/08/28 全球购物
怎样在程序里获得一个空指针
2015/01/24 面试题
薪酬专员岗位职责
2014/02/18 职场文书
庆元旦活动总结
2014/07/09 职场文书
经典毕业生求职信
2014/07/12 职场文书
【海涛教你打DOTA】死灵飞龙第一视角解说
2022/04/01 DOTA
《遗弃》开发商删推文要跑路?官方回应:还在开发
2022/04/03 其他游戏