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 $(document).ready() 与window.onload的区别
Dec 28 Javascript
JS cookie中文乱码解决方法
Jan 28 Javascript
javascript实现阻止iOS APP中的链接打开Safari浏览器
Jun 12 Javascript
详解AngularJS中的依赖注入机制
Jun 17 Javascript
ichart.js绘制虚线、平均分虚线效果的实现代码
May 05 Javascript
输入框点击时边框变色效果的实现方法
Dec 26 Javascript
详解angularjs利用ui-route异步加载组件
May 21 Javascript
Javascript中将变量转换为字符串的三种方法
Sep 19 Javascript
AngularJS监听ng-repeat渲染完成的两种方法
Jan 16 Javascript
在element-ui的select下拉框加上滚动加载
Apr 18 Javascript
vue中的面包屑导航组件实例代码
Jul 01 Javascript
js找出5个数中最大的一个数和倒数第二大的数实现方法示例小结
Mar 04 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多图上传小程序代码
2011/07/17 PHP
php引用返回与取消引用的详解
2013/06/08 PHP
在Nginx上部署ThinkPHP项目教程
2015/02/02 PHP
PHP实用函数分享之去除多余的0
2015/02/06 PHP
分享PHP-pcntl 实现多进程代码
2016/09/30 PHP
php解决DOM乱码的方法示例代码
2016/11/20 PHP
swoole和websocket简单聊天室开发
2017/11/18 PHP
通用JS事件写法实现代码
2009/01/07 Javascript
imgAreaSelect 中文文档帮助说明
2011/10/08 Javascript
javascript游戏开发之《三国志曹操传》零部件开发(五)可移动地图的实现
2013/01/23 Javascript
JS中令人发指的valueOf方法介绍
2013/02/22 Javascript
一个JavaScript递归实现反转数组字符串的实例
2014/10/14 Javascript
Javascript中String的常用方法实例分析
2015/06/13 Javascript
jquery实现表格中点击相应行变色功能效果【实例代码】
2016/05/09 Javascript
Javascript小技能总结(推荐)
2016/06/02 Javascript
Vue.js开发环境搭建
2016/11/10 Javascript
layer.js之回调销毁对话框的例子
2019/09/11 Javascript
JavaScript 实现继承的几种方式
2021/02/19 Javascript
[03:48]显微镜下的DOTA2第四期——TP动作
2014/06/20 DOTA
Python中的一些陷阱与技巧小结
2015/07/10 Python
Django中模版的子目录与include标签的使用方法
2015/07/16 Python
Python 模拟登陆的两种实现方法
2017/08/10 Python
python中Matplotlib实现绘制3D图的示例代码
2017/09/04 Python
利用TensorFlow训练简单的二分类神经网络模型的方法
2018/03/05 Python
Python中的Socket 与 ScoketServer 通信及遇到问题解决方法
2019/04/01 Python
flask框架自定义url转换器操作详解
2020/01/25 Python
Python with语句用法原理详解
2020/07/03 Python
使用CSS3制作一个简单的Chrome模拟器
2015/07/15 HTML / CSS
Html5在手机端调用相机的方法实现
2020/05/13 HTML / CSS
分层教学实施方案
2014/03/19 职场文书
房产转让协议书
2014/04/11 职场文书
教育系统干部作风整顿心得体会
2014/09/09 职场文书
2014年学生会主席工作总结
2014/11/07 职场文书
农村房屋租赁合同(范本)
2019/07/23 职场文书
python如何获取网络数据
2021/04/11 Python
jquery插件实现图片悬浮
2021/04/16 jQuery