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 Ajax学习实例6 向WebService发出请求,返回DataSet(XML) 异步调用
Mar 18 Javascript
Three.js源码阅读笔记(基础的核心Core对象)
Dec 27 Javascript
IE下写xml文件的两种方式(fso/saveAs)
Aug 05 Javascript
JQuery为页面Dom元素绑定事件及解除绑定方法
Apr 23 Javascript
JavaScript避免内存泄露及内存管理技巧
Sep 05 Javascript
Js+php实现异步拖拽上传文件
Jun 23 Javascript
jQuery EasyUI Dialog拖不下来如何解决
Sep 28 Javascript
jQuery的ajax和遍历数组json实例代码
Aug 01 Javascript
Angular中使用ui router实现系统权限控制及开发遇到问题
Sep 23 Javascript
js操作二进制数据方法
Mar 03 Javascript
angular4应用中输入的最小值和最大值的方法
May 17 Javascript
js实现鼠标点击飘爱心效果
Aug 19 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 daddslashes 使用方法介绍
2012/10/26 PHP
php中cookie的使用方法
2014/03/29 PHP
可以保证单词完整性的PHP英文字符串截取代码分享
2014/07/15 PHP
取得单条网站评论以数组形式进行输出
2014/07/28 PHP
php浏览历史记录的方法
2015/03/10 PHP
PHP加密3DES报错 Call to undefined function: mcrypt_module_open() 如何解决
2016/04/17 PHP
php中file_get_contents()函数用法实例
2019/02/21 PHP
PHP标准库 (SPL)――Countable用法示例
2020/06/05 PHP
jquery select下拉框操作的一些说明
2010/04/02 Javascript
javascript for循环从入门到偏门(效率优化+奇特用法)
2012/08/01 Javascript
图片动画横条广告带上下滚动可自定义图片、链接等等
2013/10/20 Javascript
JavaScript Promise启示录
2014/08/12 Javascript
js实现照片墙功能实例
2015/02/05 Javascript
AngularJS中如何使用$parse或$eval在运行时对Scope变量赋值
2016/01/25 Javascript
微信小程序 简单教程实例详解
2017/01/13 Javascript
使用Vue-Router 2实现路由功能实例详解
2017/11/14 Javascript
layui问题之模拟select点击事件的实例讲解
2018/08/15 Javascript
vue-cli 2.*中导入公共less文件的方法步骤
2018/11/22 Javascript
微信小程序云开发之使用云函数
2019/05/17 Javascript
Python的爬虫程序编写框架Scrapy入门学习教程
2016/07/02 Python
初探TensorFLow从文件读取图片的四种方式
2018/02/06 Python
Python爬虫之网页图片抓取的方法
2018/07/16 Python
Python使用numpy产生正态分布随机数的向量或矩阵操作示例
2018/08/22 Python
DataFrame:通过SparkSql将scala类转为DataFrame的方法
2019/01/29 Python
对python3 Serial 串口助手的接收读取数据方法详解
2019/06/12 Python
Pandas之DataFrame对象的列和索引之间的转化
2019/06/25 Python
mac系统下安装pycharm、永久激活、中文汉化详细教程
2020/11/24 Python
Python爬虫之Selenium实现键盘事件
2020/12/04 Python
Python 内存管理机制全面分析
2021/01/16 Python
CSS3 实现穿梭星空动画
2020/11/13 HTML / CSS
早晨薰衣草在线女性精品店:Morning Lavender
2021/01/04 全球购物
颇特女士香港官网:NET-A-PORTER香港
2021/03/08 全球购物
环境工程专业个人求职信
2013/12/05 职场文书
大队委员竞选演讲稿
2015/11/20 职场文书
Python激活Anaconda环境变量的详细步骤
2021/06/08 Python
Java实现多文件上传功能
2021/06/30 Java/Android