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在IE7下无法使用 $.ajax解决方法
Nov 11 Javascript
JavaScript高级程序设计 读书笔记之八 Function类及闭包
Feb 27 Javascript
javascript实现图片轮播效果
Jan 20 Javascript
浅谈js构造函数的方法与原型prototype
Jul 04 Javascript
JS继承之借用构造函数继承和组合继承
Sep 07 Javascript
jQuery EasyUI常用数据验证汇总
Sep 18 Javascript
简单实现jquery隔行变色
Nov 09 jQuery
浅谈AngularJs 双向绑定原理(数据绑定机制)
Dec 07 Javascript
Bootstrap 模态框多次显示后台提交多次BUG的解决方法
Dec 26 Javascript
详解webpack-dev-server使用http-proxy解决跨域问题
Jan 13 Javascript
Webpack 4.x搭建react开发环境的方法步骤
Aug 15 Javascript
layui table 复选框跳页后再回来保持原来选中的状态示例
Oct 26 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
实用函数7
2007/11/08 PHP
PHP 在线翻译函数代码
2009/05/07 PHP
PHP中in_array的隐式转换的解决方法
2018/03/06 PHP
PHP设计模式之状态模式定义与用法详解
2018/04/02 PHP
splice slice区别
2006/10/09 Javascript
各种常用浏览器getBoundingClientRect的解析
2009/05/21 Javascript
DOM 脚本编程中的兄弟节点
2009/10/31 Javascript
另一个javascript小测验(代码集合)
2011/07/27 Javascript
上传的js验证(图片/文件的扩展名)
2013/04/25 Javascript
javascript中处理时间戳为日期格式的方法
2014/01/02 Javascript
JsRender for object语法简介
2014/10/31 Javascript
jQuery中 attr() 方法使用小结
2015/05/03 Javascript
在JavaScript中处理时间之getHours()方法的使用
2015/06/10 Javascript
javascript跑马灯抽奖实例讲解
2020/04/17 Javascript
JavaScript中各种引用类型的常用操作方法小结
2016/05/05 Javascript
AngularJS利用Controller完成URL跳转
2016/08/09 Javascript
BootStrap下拉菜单和滚动监听插件实现代码
2016/09/26 Javascript
AngularJS学习笔记之表单验证功能实例详解
2017/07/06 Javascript
在小程序中使用canvas的方法示例
2018/09/17 Javascript
小程序实现搜索框功能
2020/03/26 Javascript
[02:43]DOTA2英雄基础教程 圣堂刺客
2013/12/09 DOTA
安装Python的web.py框架并从hello world开始编程
2015/04/25 Python
使用Python爬虫库requests发送请求、传递URL参数、定制headers
2020/01/25 Python
Python中的整除和取模实例
2020/06/03 Python
python 使用xlsxwriter循环向excel中插入数据和图片的操作
2021/01/01 Python
利用css3制作3D样式按钮实现代码
2013/03/18 HTML / CSS
临床医学专业学生的自我评价分享
2013/11/21 职场文书
商务日语毕业生自荐信
2013/11/23 职场文书
财务工作疏忽检讨书
2014/09/11 职场文书
2014教师“四风问题”对照检查材料思想汇报
2014/09/16 职场文书
武当山导游词
2015/02/03 职场文书
2015年发展党员工作总结报告
2015/03/31 职场文书
2015年度护士个人工作总结
2015/04/09 职场文书
2015年秋季灭鼠工作总结
2015/07/27 职场文书
python多线程方法详解
2022/01/18 Python
CSS中calc(100%-100px)不加空格不生效
2023/05/07 HTML / CSS