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 相关文章推荐
Jquery的Tabs内容轮换效果实现代码,几行搞定
Feb 12 Javascript
JS实现的表格操作类详解(添加,删除,排序,上移,下移)
Dec 22 Javascript
使用bootstrapValidator插件进行动态添加表单元素并校验
Sep 28 Javascript
jQuery实现三级联动效果
Mar 02 Javascript
详解angularjs的数组传参方式的简单实现
Jul 28 Javascript
浅谈react-native热更新react-native-pushy集成遇到的问题
Sep 30 Javascript
关于Vue的路由权限管理的示例代码
Mar 06 Javascript
妙用缓存调用链实现JS方法的重载
Apr 30 Javascript
vue 配置多页面应用的示例代码
Oct 22 Javascript
nuxt.js中间件实现拦截权限判断的方法
Nov 21 Javascript
webpack-url-loader 解决项目中图片打包路径问题
Feb 15 Javascript
Vue的data、computed、watch源码浅谈
Apr 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 转换字符串编码 iconv与mb_convert_encoding的区别说明
2011/11/10 PHP
php获取ip的三个属性区别介绍(HTTP_X_FORWARDED_FOR,HTTP_VIA,REMOTE_ADDR)
2012/09/23 PHP
PHP对象相互引用的内存溢出实例分析
2014/08/28 PHP
php上传文件问题汇总
2015/01/30 PHP
nginx+thinkphp下解决不支持pathinfo模式
2015/07/01 PHP
PHP面向对象之里氏替换原则简单示例
2018/04/08 PHP
PHP基于openssl实现的非对称加密操作示例
2019/01/11 PHP
PHP封装的mysqli数据库操作类示例
2019/02/16 PHP
基于JQuery的类似新浪微博展示信息效果的代码
2012/07/23 Javascript
拖动table标题实现改变td的大小(css+js代码)
2013/04/16 Javascript
改变隐藏的input中value值的方法
2014/03/19 Javascript
JavaScript去除数组里重复值的方法
2015/07/13 Javascript
微信公众平台开发教程(六)获取个性二维码的实例
2016/12/02 Javascript
利用nvm管理多个版本的node.js与npm详解
2017/11/02 Javascript
vuejs实现ready函数加载完之后执行某个函数的方法
2018/08/31 Javascript
jQuery无冲突模式详解
2019/01/17 jQuery
[54:33]2018DOTA2亚洲邀请赛小组赛 A组加赛 Liquid vs Optic
2018/04/03 DOTA
Python 解析XML文件
2009/04/15 Python
修改Python的pyxmpp2中的主循环使其提高性能
2015/04/24 Python
pycharm安装图文教程
2017/05/02 Python
python实现聊天小程序
2018/03/13 Python
python检索特定内容的文本文件实例
2018/06/05 Python
python的faker库用法
2019/11/28 Python
Opencv 图片的OCR识别的实战示例
2021/03/02 Python
英国精品买手店:Browns Fashion
2016/09/29 全球购物
Shopee马来西亚:随拍即卖,最佳行动电商拍卖平台
2017/06/05 全球购物
爱奇艺VIP会员:大剧抢先看
2018/07/11 全球购物
德国二手设计师时装和复古时装跳蚤市场:Mädchenflohmarkt
2020/11/09 全球购物
介绍下Lucene建立索引的过程
2016/03/02 面试题
本科毕业生的求职信范文
2013/11/20 职场文书
集体生日活动方案
2014/08/18 职场文书
大学生敬老院活动总结
2015/05/07 职场文书
党性修养心得体会2016
2016/01/21 职场文书
30岁前绝不能错过的10本书
2019/08/08 职场文书
四年级作文之植物
2019/09/20 职场文书
SpringBoot整合阿里云视频点播的过程详解
2021/12/06 Java/Android