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遍历文件夹与子目录的函数代码
Sep 26 PHP
PHP获取数组中某元素的位置及array_keys函数应用
Jan 29 PHP
深入PHP中慎用双等于(==)的详解
Jun 06 PHP
php中simplexml_load_string使用实例分享
Feb 13 PHP
php网页标题中文乱码的有效解决方法
Mar 05 PHP
php中3种方法删除字符串中间的空格
Mar 10 PHP
PHP采用curl模仿用户登陆新浪微博发微博的方法
Nov 07 PHP
PHP实现的QQ空间g_tk加密算法
Jul 09 PHP
PHP用FTP类上传文件视频等的简单实现方法
Sep 23 PHP
Zend Framework过滤器Zend_Filter用法详解
Dec 09 PHP
浅谈PHP的exec()函数无返回值排查方法(必看)
Mar 31 PHP
PHP的JSON封装、转变及输出操作示例
Sep 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实现zip压缩文件解压缩代码分享(简单易懂)
2014/05/10 PHP
Yii2下session跨域名共存的解决方案
2017/02/04 PHP
解决Extjs 4 Panel作为Window组件的子组件时出现双重边框问题
2013/01/11 Javascript
javascript的parseFloat()方法精度问题探讨
2013/11/26 Javascript
javascript实现文本域写入字符时限定字数
2014/02/12 Javascript
js通过八个点 拖动改变div大小的实现方法
2014/03/05 Javascript
js动态添加表格数据使用insertRow和insertCell实现
2014/05/22 Javascript
jQuery中[attribute*=value]选择器用法实例
2014/12/31 Javascript
javacript使用break内层跳出外层循环分析
2015/01/12 Javascript
百度地图自定义控件分享
2015/03/04 Javascript
javascript格式化指定日期对象的方法
2015/04/21 Javascript
移除AngularJS下URL中的#字符的方法
2015/06/19 Javascript
jQuery实现的淡入淡出二级菜单效果代码
2015/09/15 Javascript
Bootstrap入门书籍之(零)Bootstrap简介
2016/02/17 Javascript
JS实现将Asp.Net的DateTime Json类型转换为标准时间的方法
2016/08/02 Javascript
Bootstrap 响应式实用工具实例详解
2017/03/29 Javascript
JavaScript从原型到原型链深入理解
2019/06/03 Javascript
使用Vue实现调用接口加载页面初始数据
2019/10/28 Javascript
Element实现表格嵌套、多个表格共用一个表头的方法
2020/05/09 Javascript
浅谈vue中$bus的使用和涉及到的问题
2020/07/28 Javascript
一篇不错的Python入门教程
2007/02/08 Python
python测试驱动开发实例
2014/10/08 Python
Python中input和raw_input的一点区别
2014/10/21 Python
python读取word文档的方法
2015/05/09 Python
如何使用python写截屏小工具
2020/09/29 Python
为中国消费者甄选天下优品:网易严选
2016/08/11 全球购物
德国孕妇装和婴童服装网上商店:bellybutton
2018/04/12 全球购物
欧洲当代手工玻璃和瓷器的领先品牌:LSA International
2018/06/03 全球购物
雅虎笔试题(字符串操作)
2015/03/24 面试题
装修协议书范本
2014/04/21 职场文书
爱心倡议书范文
2014/05/12 职场文书
求职信的正确写法
2014/07/10 职场文书
自主招生自荐信范文
2015/03/04 职场文书
暑期工社会实践报告
2015/07/13 职场文书
解决MySQL存储时间出现不一致的问题
2021/04/28 MySQL
Python各协议下socket黏包问题原理
2022/04/12 Python