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 相关文章推荐
JavaScript读取中文cookie时的乱码问题的解决方法
Oct 14 Javascript
浅析Cookie中的Path与domain
Dec 18 Javascript
JQuery判断HTML元素是否存在的两种解决方法
Dec 26 Javascript
javascript计算星座属相(十二生肖属相)示例代码
Jan 09 Javascript
js实现右下角提示框的方法
Feb 03 Javascript
jQuery实现点击按钮文字变成input框点击保存变成文字
May 09 Javascript
简单谈谈require模块化jquery和angular的问题
Jun 23 jQuery
Phaser.js实现简单的跑酷游戏附源码下载
Oct 26 Javascript
微信小程序中的video视频实现 自定义播放按钮、封面图、视频封面上文案
Jan 02 Javascript
浅谈JavaScript中你可能不知道URL构造函数的属性
Jul 13 Javascript
解决vue axios跨域 Request Method: OPTIONS问题(预检请求)
Aug 14 Javascript
vue element-ul实现展开和收起功能的实例代码
Nov 25 Vue.js
使用原生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获取网页所有连接的方法(附demo源码下载)
2016/03/30 PHP
深入剖析浏览器退出之后php还会继续执行么
2016/05/17 PHP
PHP中功能强大却很少使用的函数实例小结
2016/11/10 PHP
javascript 一段左右两边随屏滚动的代码
2009/06/18 Javascript
javascript中将Object转换为String函数代码 (json str)
2012/04/29 Javascript
面向对象继承实例(a如何继承b问题)(自写)
2013/07/01 Javascript
JavaScript 常见安全漏洞和自动化检测技术
2015/08/21 Javascript
理解JS绑定事件
2016/01/19 Javascript
浅谈js中的延迟执行和定时执行
2016/05/31 Javascript
JavaScript中return用法示例
2016/11/29 Javascript
详解使用Vue.Js结合Jquery Ajax加载数据的两种方式
2017/01/10 Javascript
jquery实现的table排序功能示例
2017/03/10 Javascript
微信小程序开发之toast等弹框提示使用教程
2017/06/08 Javascript
详谈DOM简介及节点、属性、查找节点的方法
2017/11/16 Javascript
Java设计中的Builder模式的介绍
2018/03/22 Javascript
vue 指定组件缓存实例详解
2018/04/01 Javascript
Vue.js子组件向父组件通信的方法实例代码详解
2018/12/10 Javascript
JS+CSS实现3D切割轮播图
2020/03/21 Javascript
在vue中实现给每个页面顶部设置title
2020/07/29 Javascript
[00:59]DOTA2荣耀之路1:Doom is back!weapon X!
2018/05/22 DOTA
python的dataframe和matrix的互换方法
2018/04/11 Python
Python日志模块logging基本用法分析
2018/08/23 Python
简单了解django缓存方式及配置
2019/07/19 Python
pyhton中__pycache__文件夹的产生与作用详解
2019/11/24 Python
python中的subprocess.Popen()使用详解
2019/12/25 Python
TensorFlow tf.nn.conv2d实现卷积的方式
2020/01/03 Python
在Mac中配置Python虚拟环境过程解析
2020/06/22 Python
瑞典最好的运动鞋专卖店:Sneakersnstuff
2016/08/29 全球购物
Halston Heritage官网:简洁的日装,稍显奢华的晚装
2018/11/20 全球购物
Lookfantastic意大利官网:英国知名美妆购物网站
2019/05/31 全球购物
个人承诺书格式
2014/06/03 职场文书
小学毕业典礼演讲稿
2014/09/09 职场文书
第二批党的群众路线教育实践活动个人对照检查材料
2014/09/23 职场文书
2015年医院工作总结范文
2015/04/09 职场文书
同学会演讲稿
2019/04/02 职场文书
Python 中的单分派泛函数你真的了解吗
2021/06/22 Python