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 load事件(callback/data)使用方法及注意事项
Feb 06 Javascript
JavaScript中的onerror事件概述及使用
Apr 01 Javascript
EasyUI中combobox默认值注意事项
Mar 01 Javascript
jQuery模拟新浪微博首页滚动效果的方法
Mar 11 Javascript
jQuery源码分析之Callbacks详解
Mar 13 Javascript
jQuery通过Ajax返回JSON数据
Apr 28 Javascript
使用jQuery加载html页面到指定的div实现方法
Jul 13 Javascript
jQuery获取file控件中图片的宽高与大小
Aug 04 Javascript
js两种拼接字符串的简单方法(必看)
Sep 02 Javascript
angularjs实现时间轴效果的示例代码
Nov 29 Javascript
javaScript中的空值和假值
Dec 18 Javascript
JSONP解决JS跨域问题的实现
May 25 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模板引擎smarty生成随机数的方法和math函数详解
2014/04/24 PHP
php小技巧之过滤ascii控制字符
2014/05/14 PHP
PHP判断一个字符串是否是回文字符串的方法
2015/03/23 PHP
在php中设置session用memcache来存储的方法总结
2016/01/14 PHP
php实现QQ小程序发送模板消息功能
2019/09/18 PHP
javascript实现上传图片前的预览(TX的面试题)
2007/08/20 Javascript
javascript 页面划词搜索JS
2009/09/28 Javascript
JQuery扩展插件Validate 5添加自定义验证方法
2011/09/05 Javascript
密码强度检测效果实现原理与代码
2013/01/04 Javascript
js弹出层(jQuery插件形式附带reLoad功能)
2013/04/12 Javascript
JavaScript静态类型检查工具FLOW简介
2015/01/06 Javascript
浅谈javascript的调试
2015/01/28 Javascript
javaScript中定义类或对象的五种方式总结
2016/12/04 Javascript
JS表单数据验证的正则表达式(常用)
2017/02/18 Javascript
javascript字体颜色控件的开发 JS实现字体控制
2017/11/27 Javascript
JavaScript闭包原理与用法实例分析
2018/08/10 Javascript
layer弹窗在键盘按回车将反复刷新的实现方法
2019/09/25 Javascript
jQuery鼠标滑过横向时间轴样式(代码详解)
2019/11/01 jQuery
Python实现简单的四则运算计算器
2016/11/02 Python
python测试mysql写入性能完整实例
2018/01/18 Python
python 使用turtule绘制递归图形(螺旋、二叉树、谢尔宾斯基三角形)
2019/05/30 Python
Python Numpy 实现交换两行和两列的方法
2019/06/26 Python
Python中 CSV格式清洗与转换的实例代码
2019/08/29 Python
django数据模型on_delete, db_constraint的使用详解
2019/12/24 Python
Python3 实现爬取网站下所有URL方式
2020/01/16 Python
python numpy 矩阵堆叠实例
2020/01/17 Python
Python 面向对象之类class和对象基本用法示例
2020/02/02 Python
Python项目跨域问题解决方案
2020/06/22 Python
Python中qutip用法示例详解
2020/10/02 Python
anaconda升级sklearn版本的实现方法
2021/02/22 Python
电厂厂长岗位职责
2014/01/02 职场文书
大学学习生活感言
2014/01/18 职场文书
中学教师师德承诺书
2014/05/23 职场文书
机电专业毕业生求职信
2014/07/01 职场文书
建议书的格式及范文
2015/09/14 职场文书
html原生table实现合并单元格以及合并表头的示例代码
2023/05/07 HTML / CSS