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 判断变量类型实现代码
Oct 23 PHP
PHP If Else(elsefi) 语句
Apr 07 PHP
php使用smtp发送支持附件的邮件示例
Apr 13 PHP
PHP5中实现多态的两种方法实例分享
Apr 21 PHP
ThinkPHP自动填充实现无限级分类的方法
Aug 22 PHP
php防止sql注入的方法详解
Feb 20 PHP
基于thinkPHP3.2实现微信接入及查询token值的方法
Apr 18 PHP
Win7环境下Apache连接MySQL提示连接已重置的解决办法
May 09 PHP
PHP给前端返回一个JSON对象的实例讲解
May 31 PHP
php使用socket调用http和smtp协议实例小结
Jul 26 PHP
php实现session共享的实例方法
Sep 19 PHP
CI框架简单分页类用法示例
Jun 06 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中var_export与var_dump的区别分析
2010/08/21 PHP
深入剖析浏览器退出之后php还会继续执行么
2016/05/17 PHP
php根据用户名和手机号查询是否存在手机号码
2017/02/16 PHP
PHP实现文件下载【实例分享】
2017/04/28 PHP
通过PHP的Wrapper无缝迁移原有项目到新服务的实现方法
2020/04/02 PHP
js常见表单应用技巧
2008/01/09 Javascript
jquery.validate使用攻略 第一部
2010/07/01 Javascript
javascript当中的代码嗅探扩展原生对象和原型(prototype)
2013/01/11 Javascript
基于jquery自定义的漂亮单选按钮RadioButton
2013/11/19 Javascript
js定时器的使用(实例讲解)
2014/01/06 Javascript
jquery实现通用版鼠标经过淡入淡出效果
2014/06/15 Javascript
分享20个提升网站界面体验的jQuery插件
2014/12/15 Javascript
用JavaScript来美化HTML的select标签的下拉列表效果
2015/11/17 Javascript
Bootstrap基本布局实现方法详解
2016/11/25 Javascript
基于AGS JS开发自定义贴图图层
2017/03/31 Javascript
[02:57]DOTA2英雄基础教程 风行者
2014/01/16 DOTA
35个Python编程小技巧
2014/04/01 Python
Python中利用函数装饰器实现备忘功能
2015/03/30 Python
python基于multiprocessing的多进程创建方法
2015/06/04 Python
1 行 Python 代码快速实现 FTP 服务器
2018/01/25 Python
python中的随机函数random的用法示例
2018/01/27 Python
Python实现发送与接收邮件的方法详解
2018/03/28 Python
django缓存配置的几种方法详解
2018/07/16 Python
pyqt5 实现工具栏文字图片同时显示
2019/06/13 Python
多版本python的pip 升级后, pip2 pip3 与python版本失配解决方法
2019/09/11 Python
简单了解python数组的基本操作
2019/11/26 Python
小白教你PyCharm从下载到安装再到科学使用PyCharm2020最新激活码
2020/09/25 Python
戴森英国官网:Dyson英国
2019/05/07 全球购物
C#怎么让一个窗口居中显示?
2015/10/20 面试题
会计专业应届生自荐信
2014/06/28 职场文书
乡文化站暑期培训方案
2014/08/28 职场文书
晚自修旷课检讨书怎么写
2014/11/17 职场文书
呐喊读书笔记
2015/06/30 职场文书
网络营销实训总结
2015/08/03 职场文书
MySQL 用 limit 为什么会影响性能
2021/09/15 MySQL
PHP 时间处理类Carbon
2022/05/20 PHP