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的IE和Firefox兼容性汇编(zz)
Feb 02 Javascript
js判断变量是否未定义的代码
Mar 28 Javascript
jQuery表格排序组件-tablesorter使用示例
May 26 Javascript
jQuery级联操作绑定事件实例
Sep 02 Javascript
JS实现倒计时(天数、时、分、秒)
Nov 16 Javascript
JavaScript中数组Array.sort()排序方法详解
Mar 01 Javascript
jquery 禁止鼠标右键并监听右键事件
Apr 27 jQuery
微信小程序实现图片放大预览功能
Oct 22 Javascript
jQuery简单实现的HTML页面文本框模糊匹配查询功能完整示例
May 09 jQuery
详解vue中组件参数
Jul 09 Javascript
VSCode插件安装完成后的配置(常用配置)
Aug 24 Javascript
React + Threejs + Swiper 实现全景图效果的完整代码
Jun 28 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
实用函数3
2007/11/08 PHP
[原创]smarty简单模板变量输出方法
2016/07/09 PHP
PHP数据库表操作的封装类及用法实例详解
2016/07/12 PHP
PHP中字符串长度的截取用法示例
2017/01/12 PHP
Nginx实现反向代理
2017/09/20 Servers
Thinkphp整合阿里云OSS图片上传实例代码
2019/04/28 PHP
网站上面有这种切换效果
2006/06/26 Javascript
jQuery下的几个你可能没用过的功能
2010/08/29 Javascript
JS运行耗时操作的延时显示方法
2010/11/19 Javascript
JS构建页面的DOM节点结构的实现代码
2011/12/09 Javascript
jQuery 图片切换插件(代码比较少)
2012/05/07 Javascript
打开新窗口关闭当前页面不弹出关闭提示js代码
2013/03/18 Javascript
图片轮换效果实现代码(点击按钮停止执行)
2013/04/12 Javascript
jQuery动态显示和隐藏datagrid中的某一列的方法
2013/12/11 Javascript
dreamweaver 8实现Jquery自动提示
2014/12/04 Javascript
jQuery移动web开发中的页面初始化与加载事件
2015/12/03 Javascript
AngularJS入门教程中SQL实例详解
2016/07/27 Javascript
javascript垃圾收集机制的原理分析
2016/12/08 Javascript
jQuery控制元素隐藏和显示
2017/03/03 Javascript
移动端效果之Swiper详解
2017/10/09 Javascript
vue 之 .sync 修饰符示例详解
2018/04/21 Javascript
解决$store.getters调用不执行的问题
2019/11/08 Javascript
three.js显示中文字体与tween应用详析
2021/01/04 Javascript
使用python解析xml成对应的html示例分享
2014/04/02 Python
Python实现在线程里运行scrapy的方法
2015/04/07 Python
用Python写一段用户登录的程序代码
2018/04/22 Python
如何实现Django Rest framework版本控制
2019/07/25 Python
win10安装tensorflow-gpu1.8.0详细完整步骤
2020/01/20 Python
TensorFlow实现自定义Op方式
2020/02/04 Python
tensorflow多维张量计算实例
2020/02/11 Python
俄罗斯香水和化妆品在线商店:Aroma-butik
2020/02/28 全球购物
机关保密承诺书
2014/06/03 职场文书
销售员态度差检讨书
2014/10/26 职场文书
趣味运动会赞词
2015/07/22 职场文书
python 三边测量定位的实现代码
2021/04/22 Python
Python Django项目和应用的创建详解
2021/11/27 Python