TP3.2批量上传文件或图片 同名冲突问题的解决方法


Posted in PHP onAugust 01, 2017

本文实例为大家分享了TP3.2批量上传文件或图片的具体代码,并解决了同名冲突问题,供大家参考,具体内容如下

1、html

<form action="{:U('Upload/index')}" enctype="multipart/form-data" method="post" >
  <p><input type="file" id="file3" name="ID[]" /></p>
  <p><input type="file" id="file4" name="ID[]" /></p>
  <input type="submit" value="上传" />
  <p><img id="img1" alt="" src="/Public/IMAGE/empty_thumb.gif" /></p>
 </form>

2、php

public function index(){
       if(!empty($_FILES)){
        $upload = new \Think\Upload();// 实例化上传类
        $upload->maxSize = 3145728;
        $upload->rootPath = './Uploads/';
        $upload->savePath = 'image/';
        //$upload->saveName = date('YmdHis').'-'.randomkeys(3);//msectime(),毫秒数13位
        $upload->saveName = 'msectime';   //自定义函数,采用13位毫秒和3位随机数
        $upload->exts   = array('jpg', 'gif', 'png', 'jpeg');
        $upload->autoSub = true;
        $upload->subName = array('date','Ymd');
        
        /* 判断$_FILES[$key]是否:一维数组,单张图片上传 -xzz0703 
         * 原理:html的input type = "file" name="IDcard"和name="IDcard[]"的区别:
         *    $_FILES前者到后台php是二维数组,后者是三维数组 
        */
        foreach($_FILES as $key=>$value){
          if(count($_FILES[$key]) == count($_FILES[$key],1)){
            $info = $upload->uploadOne($_FILES[$key]);
            if($info){
              echo json_encode(array('code'=>200,'id'=>$img_id,'name'=>$img_name));exit;
            }else{
              echo json_encode(array('code'=>0,'msg'=>$upload->getError()));exit;
            }
          }
        }
        if(count($_FILES)){
          $info = $upload->upload();//如果是二维数组,使用批量上传文件的方法
          if(!$info){
            $this->error($upload->getError());
            exit;
          }
          $img_url = '/Uploads/'.$info[0]['savepath'].$info[0]['savename'];
          $res = array('imgPath1'=>$img_url,code=>$img_url,'msg'=>$info);
          echo json_encode($res);
        }        
      }   
}

3、核心:很多朋友在使用TP3.2框架的时候,在saveName属性上面被卡住了,原因就是上传服务器处理级别的百万微秒,很快。

解决:saveName = 13位的毫秒+3位随机数,完美解决,具体代码:

//返回当前的毫秒时间戳和随机数合并的字符串
function msectime() {
  list($msec, $sec) = explode(' ', microtime());
  $msectime = (float)sprintf('%.0f', (floatval($msec) + floatval($sec)) * 1000).randomkeys(3);
  return $msectime;
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
在Zeus Web Server中安装PHP语言支持
Oct 09 PHP
php自动给文章加关键词链接的函数代码
Nov 29 PHP
PHP四舍五入精确小数位及取整
Jan 14 PHP
js+php实现静态页面实时调用用户登陆状态的方法
Jan 04 PHP
php发送html格式文本邮件的方法
Jun 10 PHP
3种php生成唯一id的方法
Nov 23 PHP
php制作的简单验证码识别代码
Jan 26 PHP
linux下为php添加iconv模块的方法
Feb 28 PHP
PHP实现冒泡排序的简单实例
May 26 PHP
PHP中session跨子域的三种实现方法
Jul 25 PHP
PHP随机数函数rand()与mt_rand()的讲解
Mar 25 PHP
基于thinkphp5框架实现微信小程序支付 退款 订单查询 退款查询操作
Aug 17 PHP
如何修改yii2.0自带的user表为其它的表
Aug 01 #PHP
修改yii2.0用户登录使用的user表为其它的表实现方法(推荐)
Aug 01 #PHP
Nginx下ThinkPHP5的配置方法详解
Aug 01 #PHP
PHP读取word文档的方法分析【基于COM组件】
Aug 01 #PHP
[原创]PHP正则匹配中英文、数字及下划线的方法【用户名验证】
Aug 01 #PHP
php中文乱码问题的终极解决方案汇总
Aug 01 #PHP
PHP针对伪静态的注入总结【附asp与Python相关代码】
Aug 01 #PHP
You might like
PHP时间戳 strtotime()使用方法和技巧
2013/10/29 PHP
php实现仿写CodeIgniter的购物车类
2015/07/29 PHP
PHP代码优化技巧小结
2015/09/29 PHP
PHP使用zlib扩展实现GZIP压缩输出的方法详解
2018/04/09 PHP
动态加载外部javascript文件的函数代码分享
2011/07/28 Javascript
jQuery创建平滑的页面滚动(顶部或底部)
2013/02/26 Javascript
a标签的href和onclick 的事件的区别介绍
2013/07/26 Javascript
javascript中对Attr(dom中属性)的操作示例讲解
2013/12/02 Javascript
Vue.Js中的$watch()方法总结
2017/03/23 Javascript
vue+vuex+axio从后台获取数据存入vuex实现组件之间共享数据
2017/04/22 Javascript
JavaScript实现的DOM树遍历方法详解【二叉DOM树、多叉DOM树】
2018/05/07 Javascript
Vue从TodoList中学父子组件通信
2019/02/05 Javascript
使用weixin-java-miniapp配置进行单个小程序的配置详解
2019/03/29 Javascript
[02:14]2016国际邀请赛中国区预选赛Ehome晋级之路
2016/07/01 DOTA
[56:20]LGD vs VP Supermajor 败者组决赛 BO3 第三场 6.10
2018/07/04 DOTA
python实现问号表达式(?)的方法
2013/11/27 Python
浅谈numpy数组的几种排序方式
2017/12/15 Python
Python将多个excel文件合并为一个文件
2018/01/03 Python
python实现12306抢票及自动邮件发送提醒付款功能
2018/03/08 Python
Python进程间通信Queue消息队列用法分析
2019/05/22 Python
Pycharm中出现ImportError:DLL load failed:找不到指定模块的解决方法
2019/09/17 Python
python GUI库图形界面开发之PyQt5信号与槽基本操作
2020/02/25 Python
解决keras使用cov1D函数的输入问题
2020/06/29 Python
CSS3使用多列制作瀑布流
2016/05/10 HTML / CSS
CSS3 实现时间轴动画
2020/11/25 HTML / CSS
html5服务器推送_动力节点Java学院整理
2017/07/12 HTML / CSS
J.Crew官网:美国知名休闲服装品牌
2017/05/19 全球购物
Woolworth官网:澳洲第一大超市
2017/06/25 全球购物
Ted Baker美国官网:英国时尚品牌
2018/10/29 全球购物
Everything But Water官网:美国泳装品牌
2019/03/17 全球购物
后勤人员自我鉴定
2013/10/20 职场文书
应用英语专业自荐信
2014/01/26 职场文书
十佳文明家庭事迹
2014/05/25 职场文书
Python matplotlib 利用随机函数生成变化图形
2022/04/26 Python
html中两种获取标签内的值的方法
2022/06/16 jQuery
Win11自动黑屏怎么办 Win11自动黑屏设置教程
2022/07/15 数码科技