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编程起步(第六课)
Jan 10 Javascript
AutoSave/自动存储功能实现
Mar 24 Javascript
基于JQuery 滑动与动画的说明介绍
Apr 18 Javascript
基于SpringMVC+Bootstrap+DataTables实现表格服务端分页、模糊查询
Oct 30 Javascript
Ext JS 实现建议词模糊动态搜索功能
May 13 Javascript
vue slot 在子组件中显示父组件传递的模板
Mar 02 Javascript
react-native-video实现视频全屏播放的方法
Mar 19 Javascript
webpack4的迁移的使用方法
May 25 Javascript
JS操作json对象key、value的常用方法分析
Oct 29 Javascript
html-webpack-plugin修改页面的title的方法
Jun 18 Javascript
通过实例解析vuejs如何实现调试代码
Jul 16 Javascript
Js利用正则表达式去除字符串的中括号
Nov 23 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内核探索之解释器的执行过程
2015/12/22 PHP
关于php中的json_encode()和json_decode()函数的一些说明
2016/11/20 PHP
Zend Framework动作控制器用法示例
2016/12/09 PHP
PHP框架自动加载类文件原理详解
2017/06/06 PHP
php获取微信openid方法总结
2019/10/10 PHP
子窗体与父窗体传值示例js代码
2013/08/01 Javascript
javascript使用正则控制input输入框允许输入的值方法大全
2014/06/19 Javascript
手机端网页点击链接触发自动拨打或保存电话的示例代码
2014/08/15 Javascript
JS实现带有抽屉效果的产品类网站多级导航菜单代码
2015/09/15 Javascript
jQuery中 $ 符号的冲突问题及解决方案
2016/11/04 Javascript
easyui datagrid 表格中操作栏 按钮图标不显示的解决方法
2017/07/27 Javascript
浅谈Koa服务限流方法实践
2017/10/23 Javascript
简单说说如何使用vue-router插件的方法
2019/04/08 Javascript
jquery UI实现autocomplete在获取焦点时得到显示列表功能示例
2019/06/04 jQuery
express中static中间件的具体使用方法
2019/10/17 Javascript
vue keep-alive列表页缓存 详情页返回上一页不刷新,定位到之前位置
2019/11/26 Javascript
nodejs实现百度舆情接口应用示例
2020/02/07 NodeJs
python正则表达式re模块详细介绍
2014/05/29 Python
Python实现将DOC文档转换为PDF的方法
2015/07/25 Python
python3实现全角和半角字符转换的方法示例
2017/09/21 Python
Python安装Numpy和matplotlib的方法(推荐)
2017/11/02 Python
解决pycharm工程启动卡住没反应的问题
2019/01/19 Python
新手入门Python编程的8个实用建议
2019/07/12 Python
使用Python和Scribus创建一个RGB立方体的方法
2019/07/17 Python
django模板获取list中指定索引的值方式
2020/05/14 Python
Anaconda+vscode+pytorch环境搭建过程详解
2020/05/25 Python
Python socket服务常用操作代码实例
2020/06/22 Python
Html5 web本地存储实例详解
2016/07/28 HTML / CSS
轻松制作精彩视频:Animoto
2018/09/19 全球购物
我能否用void** 指针作为参数, 使函数按引用接受一般指针
2013/02/16 面试题
超市实习总结自我鉴定
2013/09/19 职场文书
活动总结报告范文
2014/05/04 职场文书
2014年语文教学工作总结
2014/12/17 职场文书
仓库保管员岗位职责
2015/02/09 职场文书
单身证明范本
2015/06/15 职场文书
移除Selenium中window.navigator.webdriver值
2022/06/10 Python