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 相关文章推荐
Apache设置虚拟WEB
Oct 09 PHP
Parse正式发布开源PHP SDK
Aug 11 PHP
详解PHP中的mb_detect_encoding函数使用方法
Aug 18 PHP
php中注册器模式类用法实例分析
Nov 03 PHP
PHP生成可点击刷新的验证码简单示例
May 13 PHP
PHP入门教程之字符串处理技巧总结(转换,过滤,解析,查找,截取,替换等)
Sep 11 PHP
php简单截取字符串代码示例
Oct 19 PHP
thinkPHP模板中for循环与switch语句用法示例
Nov 30 PHP
tp5(thinkPHP5框架)使用DB实现批量删除功能示例
May 28 PHP
php常用字符串查找函数strstr()与strpos()实例分析
Jun 21 PHP
基于laravel-admin 后台 列表标签背景的使用方法
Oct 03 PHP
tp5 sum某个字段相加得到总数的例子
Oct 18 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
一个多文件上传的例子(原创)
2006/10/09 PHP
《PHP编程最快明白》第二讲 数字、浮点、布尔型、字符串和数组
2010/11/01 PHP
PHP5中Cookie与 Session使用详解
2013/04/30 PHP
ThinkPHP查询返回简单字段数组的方法
2014/08/25 PHP
php使用MySQL保存session会话的方法
2015/06/26 PHP
Yii2创建控制器(createController)方法详解
2016/07/23 PHP
基于node.js的快速开发透明代理
2010/12/25 Javascript
JQuery中html()方法使用不当带来的陷阱
2011/04/07 Javascript
用js实现输入提示(自动完成)的实例代码
2013/06/14 Javascript
jQuery自定义事件的简单实现代码
2014/01/27 Javascript
通过url查找a元素应用案例
2014/04/29 Javascript
jQuery实现标题有打字效果的焦点图代码
2015/11/16 Javascript
微信小程序 loading 详解及实例代码
2016/11/09 Javascript
js实现3d悬浮效果
2017/02/16 Javascript
angularjs封装$http为factory的方法
2017/05/18 Javascript
jQuery实现base64前台加密解密功能详解
2017/08/29 jQuery
基于javascript中的typeof和类型判断(详解)
2017/10/27 Javascript
js循环map 获取所有的key和value的实现代码(json)
2018/05/09 Javascript
解决bootstrap模态框数据缓存的问题方法
2018/08/10 Javascript
纯javascript实现选择框的全选与反选功能
2019/04/08 Javascript
js实现网页版贪吃蛇游戏
2020/02/22 Javascript
基于小程序请求接口wx.request封装的类axios请求
2020/07/02 Javascript
在Echarts图中给坐标轴加一个标识线markLine
2020/07/20 Javascript
Vue时间轴 vue-light-timeline的用法说明
2020/10/29 Javascript
Vue 实例中使用$refs的注意事项
2021/01/29 Vue.js
解决python通过cx_Oracle模块连接Oracle乱码的问题
2018/10/18 Python
python实现滑雪游戏
2020/02/22 Python
使用python客户端访问impala的操作方式
2020/03/28 Python
html5组织内容_动力节点Java学院整理
2017/07/10 HTML / CSS
PHP经典面试题
2016/09/03 面试题
如何查询Oracle数据库中已经创建的索引
2013/10/11 面试题
社区学习十八大感想
2014/01/22 职场文书
总经理司机职责
2014/02/02 职场文书
基层党组织建设整改方案
2014/09/16 职场文书
群众路线个人对照检查材料2014
2014/09/26 职场文书
Nginx流量拷贝ngx_http_mirror_module模块使用方法详解
2022/04/07 Servers