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 陷阱 window全局对象
Nov 26 Javascript
JavaScript与DOM组合动态创建表格实例
Dec 23 Javascript
使用不同的方法结合/合并两个JS数组
Sep 18 Javascript
深入理解JavaScript系列(25):设计模式之单例模式详解
Mar 03 Javascript
Javascript实现div的toggle效果实例分析
Jun 09 Javascript
js 获取json数组里面数组的长度实例
Oct 31 Javascript
Vue.set()动态的新增与修改数据,触发视图更新的方法
Sep 15 Javascript
JS中通过url动态获取图片大小的方法小结(两种方法)
Oct 31 Javascript
微信小程序整合使用富文本编辑器的方法详解
Apr 25 Javascript
JS实现打字游戏
Dec 17 Javascript
使用vue编写h5公众号跳转小程序的实现代码
Nov 27 Vue.js
JS一分钟在github+Jekyll的博客中添加访问量功能的实现
Apr 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 imagecreatetruecolor 创建高清和透明图片代码小结
2010/05/15 PHP
试用php中oci8扩展
2015/06/18 PHP
PHP正则表达式过滤html标签属性(DEMO)
2016/05/04 PHP
PHP转换文本框内容为HTML格式的方法
2016/07/20 PHP
laravel框架中路由设置,路由参数和路由命名实例分析
2019/11/23 PHP
雄兵连第三季海报曝光,艾妮熙德成主角,蔷薇新造型
2021/03/09 国漫
关于jQuery UI 使用心得及技巧
2012/10/10 Javascript
Javscript调用iframe框架页面中函数的方法
2014/11/01 Javascript
JS实现至少包含字母、大小写数字、字符的密码等级的两种方法
2015/02/03 Javascript
js判断手机号运营商的方法
2015/10/23 Javascript
jQuery四种选择器使用及示例
2016/06/05 Javascript
浅谈$('div a') 与$('div&gt;a')的区别
2016/07/18 Javascript
详解vue-cli与webpack结合如何处理静态资源
2017/09/19 Javascript
vue cli 3.0 使用全过程解析
2018/06/14 Javascript
javascript匿名函数中的'return function()'作用
2018/10/15 Javascript
CKEditor 4.4.1 添加代码高亮显示插件功能教程【使用官方推荐Code Snippet插件】
2019/06/14 Javascript
vue实现评价星星功能
2020/06/30 Javascript
vue实现轮播图帧率播放
2021/01/26 Vue.js
[02:21]DOTA2英雄基础教程 蝙蝠骑士
2013/12/16 DOTA
pycharm 使用心得(四)显示行号
2014/06/05 Python
Python简单操作sqlite3的方法示例
2017/03/22 Python
Python实现从log日志中提取ip的方法【正则提取】
2018/03/31 Python
pyqt实现.ui文件批量转换为对应.py文件脚本
2019/06/19 Python
Python OrderedDict的使用案例解析
2019/10/25 Python
python 使用csv模块读写csv格式文件的示例
2020/12/02 Python
python爬取2021猫眼票房字体加密实例
2021/02/19 Python
全球速卖通西班牙站:AliExpress西班牙
2017/10/30 全球购物
Mamas & Papas沙特阿拉伯:英国最受欢迎的婴儿品牌
2017/11/20 全球购物
Sneaker Studio罗马尼亚网站:购买运动鞋
2018/11/04 全球购物
苹果台湾官网:Apple台湾
2019/01/05 全球购物
Mountain Warehouse波兰官方网站:英国户外品牌
2019/08/29 全球购物
阿拉伯时尚购物网站:Nisnass
2021/02/07 全球购物
竞争与合作演讲稿
2014/05/12 职场文书
融资合作协议书范本
2014/10/17 职场文书
让子弹飞观后感
2015/06/11 职场文书
Python读取和写入Excel数据
2022/04/20 Python