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隐形一句话后门,和ThinkPHP框架加密码程序(base64_decode)
Nov 02 PHP
php ci框架中加载css和js文件失败的原因及解决方法
Jul 29 PHP
PHP HTTP 认证实例详解
Nov 03 PHP
PHP中递归的实现实例详解
Nov 14 PHP
PHP设计模式之适配器模式定义与用法详解
Apr 03 PHP
PHP微信H5支付开发实例
Jul 25 PHP
PHP预定义超全局数组变量小结
Aug 20 PHP
PHP PDOStatement::setAttribute讲解
Feb 01 PHP
Centos7 Yum安装PHP7.2流程教程详解
Jul 02 PHP
PHP Beanstalkd消息队列的安装与使用方法实例详解
Feb 21 PHP
PHP正则表达式函数preg_replace用法实例分析
Jun 04 PHP
laravel数据库查询结果自动转数组修改实例
Feb 27 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 XML操作类DOMDocument
2009/12/16 PHP
PHP中实现中文字符进制转换原理分析
2011/12/06 PHP
php中error与exception的区别及应用
2014/07/28 PHP
PHP中使用file_get_contents抓取网页中文乱码问题解决方法
2014/12/17 PHP
PHP生成和获取XML格式数据的方法
2016/03/04 PHP
Joomla开启SEF的方法
2016/05/04 PHP
PHP微信公众号开发之微信红包实现方法分析
2017/07/14 PHP
window.event.keyCode兼容IE和Firefox实现js代码
2013/05/30 Javascript
jquery创建表格(自动增加表格)代码分享
2013/12/25 Javascript
js document.getElementsByClassName的使用介绍与自定义函数
2016/11/25 Javascript
详解JS中定时器setInterval和setTImeout的this指向问题
2017/01/06 Javascript
基于nodejs+express4.X实现文件下载的实例代码
2017/07/13 NodeJs
JS实现提交表单前的数字及邮箱校检功能
2017/11/13 Javascript
详解JS函数stack size计算方法
2018/06/18 Javascript
Angular5集成eventbus的示例代码
2018/07/19 Javascript
菊花转动的jquery加载动画效果
2018/08/19 jQuery
webpack自动打包和热更新的实现方法
2019/06/24 Javascript
JS实现滑动插件
2020/01/15 Javascript
vue组件创建的三种方式小结
2020/02/03 Javascript
微信小程序自定义弹出层效果
2020/05/26 Javascript
[02:27]2014DOTA2国际邀请赛 VG赛后采访:更大的挑战在等着我们
2014/07/13 DOTA
Python字符串替换实例分析
2015/05/11 Python
Python自动化运维_文件内容差异对比分析
2017/12/13 Python
python中kmeans聚类实现代码
2018/02/23 Python
Pandas 数据框增、删、改、查、去重、抽样基本操作方法
2018/04/12 Python
python中的turtle库函数简单使用教程
2018/07/23 Python
Django 重写用户模型的实现
2019/07/29 Python
python连接mongodb集群方法详解
2020/02/13 Python
感恩教育月活动总结
2014/07/07 职场文书
贷款承诺书
2015/01/20 职场文书
2015年计划生育协会工作总结
2015/05/13 职场文书
学习十八大的感悟
2015/08/11 职场文书
营销策划分析:怎么策划才能更好销量产品?
2019/09/04 职场文书
Spring boot应用启动后首次访问很慢的解决方案
2021/06/23 Java/Android
英镑符号 £
2022/02/17 杂记
前端实现滑动按钮AJAX与后端交互的示例代码
2022/02/24 Javascript