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 设计模式(二) 闭包
May 26 Javascript
js null undefined 空区别说明
Jun 13 Javascript
js性能优化 如何更快速加载你的JavaScript页面
Mar 17 Javascript
想用好React的你必须要知道的一些事情
Jul 24 Javascript
React如何将组件渲染到指定DOM节点详解
Sep 08 Javascript
纯html+css+javascript实现楼层跳跃式的页面布局(实例代码)
Oct 25 Javascript
vue watch自动检测数据变化实时渲染的方法
Jan 16 Javascript
vue2.0项目实现路由跳转的方法详解
Jun 21 Javascript
Vue实现动态添加或者删除对象和对象数组的操作方法
Sep 21 Javascript
vue 实现超长文本截取,悬浮框提示
Jul 29 Javascript
手把手教你实现 Promise的使用方法
Sep 02 Javascript
jQuery+ajax实现文件上传功能
Dec 22 jQuery
使用原生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
windows7下安装php的imagick和imagemagick扩展教程
2014/07/04 PHP
浅谈PHP正则表达式中修饰符/i, /is, /s, /isU
2014/10/21 PHP
php的ddos攻击解决方法
2015/01/08 PHP
php魔法函数与魔法常量使用介绍
2017/07/23 PHP
PHP判断是否微信访问的方法示例
2019/03/27 PHP
js实现点小图看大图效果的思路及示例代码
2013/10/28 Javascript
Javascript 读取操作Sql中的Xml字段
2014/10/09 Javascript
利用python分析access日志的方法
2016/10/26 Javascript
巧用Javascript的逻辑运算符
2016/12/02 Javascript
有关JS中的0,null,undefined,[],{},'''''''',false之间的关系
2017/02/14 Javascript
js中toString()和String()区别详解
2017/03/23 Javascript
js弹性势能动画之抛物线运动实例详解
2017/07/27 Javascript
微信小程序页面间跳转传参方式总结
2019/06/13 Javascript
javascript this指向相关问题及改变方法
2020/11/19 Javascript
[01:02:48]2018DOTA2亚洲邀请赛小组赛 A组加赛 Newbee vs Liquid
2018/04/03 DOTA
[11:12]2018DOTA2国际邀请赛寻真——绿色长城OpTic
2018/08/10 DOTA
[07:54]DOTA2-DPC中国联赛 正赛 iG vs VG 选手采访
2021/03/11 DOTA
Python HTMLParser模块解析html获取url实例
2015/04/08 Python
Python实现的寻找前5个默尼森数算法示例
2018/03/25 Python
python2.7无法使用pip的解决方法(安装easy_install)
2018/04/03 Python
详解python使用pip安装第三方库(工具包)速度慢、超时、失败的解决方案
2018/12/02 Python
Python中random模块常用方法的使用教程
2020/10/04 Python
Numpy中np.random.rand()和np.random.randn() 用法和区别详解
2020/10/23 Python
去除python中的字符串空格的简单方法
2020/12/22 Python
CSS3 完美实现圆角效果
2009/07/13 HTML / CSS
CSS3不透明度实例讲解
2016/04/26 HTML / CSS
简单html5代码获取地理位置
2014/03/31 HTML / CSS
Dyson戴森波兰官网:Dyson.pl
2019/08/05 全球购物
linux面试题参考答案(7)
2012/10/29 面试题
2014年党员加强作风建设思想汇报
2014/09/15 职场文书
会计实训报告范文
2014/11/04 职场文书
工作期间打牌检讨书范文
2014/11/20 职场文书
高三语文复习计划
2015/01/19 职场文书
工作简报格式范文
2015/07/21 职场文书
导游词之重庆钓鱼城
2019/09/19 职场文书