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 相关文章推荐
js Dialog 实践分享
Oct 22 Javascript
Document:getElementsByName()使用方法及示例
Oct 28 Javascript
判断js中各种数据的类型方法之typeof与0bject.prototype.toString讲解
Nov 07 Javascript
JavaScript中发布/订阅模式的简单实例
Nov 05 Javascript
基于Jquery实现焦点图淡出淡入效果
Nov 30 Javascript
JavaScript中的函数(二)
Dec 23 Javascript
微信小程序城市定位的实现实例(获取当前所在国家城市信息)
May 17 Javascript
基于react组件之间的参数传递(详解)
Sep 05 Javascript
Javascript中JSON数据分组优化实践及JS操作JSON总结
Dec 22 Javascript
vue webpack实用技巧总结
Apr 24 Javascript
json 带斜杠时如何解析的实现
Aug 12 Javascript
详解JavaScript中精度失准问题及解决方法
Feb 04 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
解析php入库和出库
2013/06/25 PHP
PHPCMS忘记后台密码的解决办法
2016/10/30 PHP
PHP实现微信申请退款功能
2018/10/01 PHP
PHP Swoole异步MySQL客户端实现方法示例
2019/10/24 PHP
[原创]js与自动伸缩图片 自动缩小图片的多浏览器兼容的方法总结
2007/03/12 Javascript
ExtJS Window 最小化的一种方法
2009/11/18 Javascript
ExtJs 3.1 XmlTreeLoader Example Error
2010/02/09 Javascript
一个基于jQuery的树型插件(OrangeTree)使用介绍
2012/05/03 Javascript
jQuery 插件仿百度搜索框智能提示(带Value值)
2013/01/22 Javascript
『jQuery』名称冲突使用noConflict方法解决
2013/04/22 Javascript
JQuery+CSS提示框实现思路及代码(纯手工打造)
2013/05/07 Javascript
intro.js 页面引导简单用法 分享
2013/08/06 Javascript
jquery控制select的text/value值为选中状态
2014/06/03 Javascript
Django1.7+JQuery+Ajax验证用户注册集成小例子
2017/04/08 jQuery
JavaScript实现打地鼠小游戏
2020/04/23 Javascript
jquery点赞功能实现代码 点个赞吧!
2020/05/29 jQuery
vue之将echart封装为组件
2018/06/02 Javascript
使用JS获取页面上的所有标签
2018/10/18 Javascript
vue实现选中效果
2020/10/07 Javascript
vue iview 隐藏Table组件里的某一列操作
2020/11/13 Javascript
python算法学习之计数排序实例
2013/12/18 Python
python访问mysql数据库的实现方法(2则示例)
2016/01/06 Python
python对json的相关操作实例详解
2017/01/04 Python
Python基于回溯法子集树模板解决数字组合问题实例
2017/09/02 Python
在python中用url_for构造URL的方法
2019/07/25 Python
解决PyCharm IDE环境下,执行unittest不生成测试报告的问题
2020/09/03 Python
后勤工作职责
2013/12/22 职场文书
我的大学生活职业生涯规划
2014/01/02 职场文书
大学生学习自我评价
2014/01/13 职场文书
餐厅经理岗位职责和岗位目标
2014/02/13 职场文书
超市员工辞职信范文
2015/05/12 职场文书
2016大学生就业指导课心得体会
2016/01/15 职场文书
2016年综治宣传月活动宣传标语口号
2016/03/16 职场文书
教你如何用python开发一款数字推盘小游戏
2021/04/14 Python
深入理解go缓存库freecache的使用
2022/02/15 Golang
MySQL为数据表建立索引的原则详解
2022/03/03 MySQL