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 API学Jquery 之二 属性
Apr 09 Javascript
jQuery下实现等待指定元素加载完毕(可改成纯js版)
Jul 11 Javascript
JavaScript Serializer序列化时间处理示例
Jul 31 Javascript
javascript学习笔记整理(概述、变量、数据类型简介)
Oct 25 Javascript
深入理解JS正则表达式---分组
Jul 18 Javascript
微信小程序 网络请求(GET请求)详解
Nov 16 Javascript
Angular实现模版驱动表单的自定义校验功能(密码确认为例)
May 17 Javascript
深入浅析Vue中的Prop
Jun 10 Javascript
Vue常用指令详解分析
Aug 19 Javascript
微信小程序防止多次点击跳转和防止表单组件输入内容多次验证功能(函数防抖)
Sep 19 Javascript
详解JavaScript修改注册表的方法
Jan 05 Javascript
vue vant中picker组件的使用
Nov 03 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获取$_POST同名参数数组的实现介绍
2013/06/30 PHP
php输出xml必须header的解决方法
2014/10/17 PHP
ThinkPHP中调用PHPExcel的实现代码
2017/04/08 PHP
一段非常简单的让图片自动切换js代码
2006/11/10 Javascript
关于jquery append() html时的小问题的解决方法
2010/12/16 Javascript
Jquery写一个鼠标拖动效果实现原理与代码
2012/12/24 Javascript
JavaScript避免代码的重复执行经验技巧分享
2014/04/17 Javascript
jquery网页回到顶部效果(图标渐隐,自写)
2014/06/16 Javascript
Javascript正则控制文本框只能输入整数或浮点数
2014/09/02 Javascript
JavaScript实现防止网页被嵌入Frame框架的代码分享
2014/12/29 Javascript
javascript实现10个球随机运动、碰撞实例详解
2015/07/08 Javascript
利用jQuery和CSS将背景图片拉伸
2015/10/16 Javascript
JavaScript对象数组如何按指定属性和排序方向进行排序
2016/06/15 Javascript
原生js图片轮播效果实现代码
2016/10/19 Javascript
koa大型web项目中使用路由装饰器的方法示例
2019/04/02 Javascript
vue制作抓娃娃机的示例代码
2020/04/17 Javascript
[51:53]完美世界DOTA2联赛循环赛 LBZS vs DM BO2第二场 11.01
2020/11/02 DOTA
使用Python的Django框架结合jQuery实现AJAX购物车页面
2016/04/11 Python
Python简单生成随机姓名的方法示例
2017/12/27 Python
pycharm远程开发项目的实现步骤
2019/01/20 Python
python 实现将多条曲线画在一幅图上的方法
2019/07/07 Python
利用python list完成最简单的DB连接池方法
2019/08/09 Python
在OpenCV里使用特征匹配和单映射变换的代码详解
2019/10/23 Python
python调用百度API实现人脸识别
2020/11/17 Python
Waterford英国官方网站:世界上最受欢迎的优质水晶品牌
2019/08/17 全球购物
本科生学习总结的自我评价
2013/10/02 职场文书
卫校护理专业毕业生求职信
2013/11/26 职场文书
护士自荐信范文
2013/12/15 职场文书
课堂教学改革实施方案
2014/03/17 职场文书
无传销社区工作方案
2014/05/13 职场文书
2014年群众路线党员自我评议
2014/09/24 职场文书
出差报告格式模板
2014/11/06 职场文书
2015夏季作息时间调整通知
2015/04/24 职场文书
2016年小学生寒假总结
2015/10/10 职场文书
python基础之文件操作
2021/10/24 Python
Java9新特性对HTTP2协议支持与非阻塞HTTP API
2022/03/16 Java/Android