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 相关文章推荐
Search Engine Friendly的URL设计
Oct 09 PHP
实现dedecms全站URL静态化改造的代码
Mar 29 PHP
php print EOF实现方法
May 21 PHP
PHP以及MYSQL日期比较方法
Nov 29 PHP
奉献出一个封装的curl函数 便于调用(抓数据专用)
Jul 22 PHP
php实现水仙花数示例分享
Apr 03 PHP
PHP安装memcached扩展笔记
May 28 PHP
php简单实现文件或图片强制下载的方法
Dec 06 PHP
基于PHP-FPM进程池探秘
Oct 17 PHP
php删除二维数组中的重复值方法
Mar 12 PHP
PHP登录验证功能示例【用户名、密码、验证码、数据库、已登陆验证、自动登录和注销登录等】
Feb 25 PHP
PHP反射基础知识回顾
Sep 10 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
全国FM电台频率大全 - 18 湖南省
2020/03/11 无线电
php强制用户转向www域名的方法
2015/06/19 PHP
PHP实现的简单路由和类自动加载功能
2018/03/13 PHP
thinkphp5修改view到根目录实例方法
2019/07/02 PHP
PHP实现文件上传操作和封装
2020/03/04 PHP
Google排名中的10个最著名的 JavaScript库
2010/04/27 Javascript
如何正确使用javascript 来进行我们的程序开发
2014/06/23 Javascript
JavaScript控制网页层收起和展开效果的方法
2015/04/15 Javascript
javascript发送短信验证码实现代码
2015/11/12 Javascript
js实现当鼠标移到表格上时显示这一格全部内容的代码
2016/06/12 Javascript
jQueryUI Datepicker组件设置日期高亮
2016/10/13 Javascript
jQuery 的 ready()的纯js替代方法
2016/11/20 Javascript
bootstrap网格系统使用方法解析
2017/01/13 Javascript
thinkjs之页面跳转同步异步操作
2017/02/05 Javascript
使用AngularJS编写多选按钮选中时触发指定方法的指令代码详解
2017/07/24 Javascript
VUE axios上传图片到七牛的实例代码
2017/07/28 Javascript
防止页面url缓存中ajax中post请求的处理方法
2017/10/10 Javascript
详解jQuery-each()方法
2019/03/13 jQuery
解决IOS端微信H5页面软键盘弹起后页面下方留白的问题
2019/06/05 Javascript
uni-app使用微信小程序云函数的步骤示例
2020/05/22 Javascript
[01:00]DOTA2 store: Collection of Artisan's Wonders
2015/08/12 DOTA
Python批量修改文件后缀的方法
2014/01/26 Python
python实现从字典中删除元素的方法
2015/05/04 Python
网红编程语言Python将纳入高考你怎么看?
2018/06/07 Python
解决Pyinstaller 打包exe文件 取消dos窗口(黑框框)的问题
2019/06/21 Python
python 模拟创建seafile 目录操作示例
2019/09/26 Python
使用Keras中的ImageDataGenerator进行批次读图方式
2020/06/17 Python
python学习笔记之多进程
2020/08/06 Python
英国设计的甲板鞋和船鞋:Chatham
2018/12/06 全球购物
意大利时尚奢侈品店:D’Aniello Boutique
2021/01/19 全球购物
环保倡议书400字
2014/05/15 职场文书
美化环境标语
2014/06/20 职场文书
作风建设年度心得体会
2014/10/29 职场文书
2014年银行客户经理工作总结
2014/11/12 职场文书
具结保证书范本
2015/05/11 职场文书
导游词之吉林吉塔
2019/11/11 职场文书