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实现的网页右下角tab样式在线客服效果代码
Oct 23 Javascript
防止Node.js中错误导致进程阻塞的办法
Aug 11 Javascript
浅谈js中同名函数和同名变量的执行问题
Feb 12 Javascript
jQuery树控件zTree使用方法详解(一)
Feb 28 Javascript
JavaScript原生数组Array常用方法
Apr 06 Javascript
vue项目首屏打开速度慢的解决方法
Mar 31 Javascript
vue 地区选择器v-distpicker的常用功能
Jul 23 Javascript
浅谈微信小程序列表埋点曝光指南
Oct 15 Javascript
vue实现扫码功能
Jan 17 Javascript
完美解决通过IP地址访问VUE项目的问题
Jul 18 Javascript
jquery实现抽奖功能
Oct 22 jQuery
解决vue 使用axios.all()方法发起多个请求控制台报错的问题
Nov 09 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
德生H-501的评价与改造
2021/03/02 无线电
SSI指令
2006/11/25 PHP
php mysql Errcode: 28 终极解决方法
2009/07/01 PHP
提高define性能的php扩展hidef的安装和使用
2011/06/14 PHP
php.ini save_handler 修改不生效的解决办法
2014/07/22 PHP
PHP实现采集中国天气网未来7天天气
2014/10/15 PHP
学习php设计模式 php实现适配器模式
2015/12/07 PHP
javascript 面向对象编程 万物皆对象
2009/09/17 Javascript
js 页面元素的几个用法总结
2013/11/18 Javascript
window.showModalDialog()返回值的学习心得总结
2014/01/07 Javascript
jQuery()方法的第二个参数详解
2015/04/29 Javascript
尝试自己动手用react来写一个分页组件(小结)
2018/02/09 Javascript
Vue实现用户自定义字段显示数据的方法
2018/08/28 Javascript
微信小程序pinker组件使用实现自动相减日期
2020/05/07 Javascript
js 压缩图片的示例(只缩小体积,不更改图片尺寸)
2020/10/21 Javascript
Python splitlines使用技巧
2008/09/06 Python
Python的Tornado框架异步编程入门实例
2015/04/24 Python
Python实现将绝对URL替换成相对URL的方法
2015/06/28 Python
Python中数字以及算数运算符的相关使用
2015/10/12 Python
老生常谈python函数参数的区别(必看篇)
2017/05/29 Python
Python中enumerate()函数编写更Pythonic的循环
2018/03/06 Python
Python 对输入的数字进行排序的方法
2018/06/23 Python
python绘制随机网络图形示例
2019/11/21 Python
Python Selenium参数配置方法解析
2020/01/19 Python
python opencv圆、椭圆与任意多边形的绘制实例详解
2020/02/06 Python
Python实现http接口自动化测试的示例代码
2020/10/09 Python
python爬虫 requests-html的使用
2020/11/30 Python
CSS超出文本指定宽度用省略号代替和文本不换行
2016/05/05 HTML / CSS
SmartBuyGlasses台湾:名牌眼镜,名牌太阳眼镜及隐形眼镜
2017/01/04 全球购物
游戏商店:Eneba
2020/04/25 全球购物
学生安全教育材料
2014/02/14 职场文书
2014年语文教学工作总结
2014/12/17 职场文书
股东大会通知
2015/04/24 职场文书
2015年全民创业工作总结
2015/07/23 职场文书
vue实现可拖拽的dialog弹框
2021/05/13 Vue.js
《黑岩★★射手 DAWN FALL》BD发售宣传CM公开
2022/04/04 日漫