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 相关文章推荐
php strstr查找字符串中是否包含某些字符的查找函数
Jun 03 PHP
Zend的Registry机制的使用说明
May 02 PHP
基于HBase Thrift接口的一些使用问题及相关注意事项的详解
Jun 03 PHP
php生成EAN_13标准条形码实例
Nov 13 PHP
php获取textarea的值并处理回车换行的方法
Oct 20 PHP
thinkphp中memcache的用法实例
Nov 29 PHP
PHP进程同步代码实例
Feb 12 PHP
WordPress中缩略图的使用以及相关技巧
Nov 24 PHP
PHP函数rtrim()使用中的怪异现象分析
Feb 24 PHP
Yii2下点击验证码的切换实例代码
Mar 14 PHP
PHP5中使用mysqli的prepare操作数据库的介绍
Mar 18 PHP
PHP7创建销毁session的实例方法
Feb 03 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的垃圾回收机制详解
2013/10/28 PHP
以文件形式缓存php变量的方法
2015/06/26 PHP
PHP常用的三种设计模式汇总
2016/08/28 PHP
php实现替换手机号中间数字为*号及隐藏IP最后几位的方法
2016/11/16 PHP
js实现图片在未加载完成前显示加载中字样
2014/09/03 Javascript
Javascript核心读书有感之类型、值和变量
2015/02/11 Javascript
几种经典排序算法的JS实现方法
2016/03/25 Javascript
JS动态改变浏览器标题的方法
2016/04/06 Javascript
JavaScript 节流函数 Throttle 详解
2016/07/04 Javascript
JS克隆,属性,数组,对象,函数实例分析
2016/11/26 Javascript
Node.js npm命令运行node.js脚本的方法
2018/10/10 Javascript
Vue + Element UI图片上传控件使用详解
2019/08/20 Javascript
小程序表单认证布局及验证详解
2020/06/19 Javascript
vue-cli打包后本地运行dist文件中的index.html操作
2020/08/12 Javascript
js实现有趣的倒计时效果
2021/01/19 Javascript
js canvas实现五子棋小游戏
2021/01/22 Javascript
python函数缺省值与引用学习笔记分享
2013/02/10 Python
Python中exit、return、sys.exit()等使用实例和区别
2015/05/28 Python
一步步教你用Python实现2048小游戏
2017/01/19 Python
利用python画一颗心的方法示例
2017/01/31 Python
Python使用pyh生成HTML文档的方法示例
2018/03/10 Python
深入理解python中sort()与sorted()的区别
2018/08/29 Python
pytorch 在sequential中使用view来reshape的例子
2019/08/20 Python
Pytorch模型转onnx模型实例
2020/01/15 Python
俄罗斯香水和化妆品购物网站:Л’Этуаль
2018/05/10 全球购物
神路信息Java面试题目
2013/03/31 面试题
挂牌仪式策划方案
2014/05/18 职场文书
先进教育工作者事迹材料
2014/12/23 职场文书
语文复习计划
2015/01/19 职场文书
2015年卫生监督工作总结
2015/05/21 职场文书
离职证明范本
2015/06/12 职场文书
乡镇团代会开幕词
2016/03/04 职场文书
2016年全国爱眼日宣传教育活动总结
2016/04/05 职场文书
MySQL查看表和清空表的常用命令总结
2021/05/26 MySQL
win10电脑双屏显示一个黑屏怎么办?win10电脑双屏显示一个黑屏解决方法
2022/07/15 数码科技