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 相关文章推荐
桌面中心(二)数据库写入
Oct 09 PHP
一个简单计数器的源代码
Oct 09 PHP
PHP取进制余数函数代码
Jan 19 PHP
Thinkphp模板中使用自定义函数的方法
Sep 23 PHP
php中AES加密解密的例子小结
Feb 18 PHP
PHP解码unicode编码的中文字符代码分享
Aug 13 PHP
PHP+MySQL修改记录的方法
Jan 21 PHP
浅谈php提交form表单
Jul 01 PHP
yii2高级应用之自定义组件实现全局使用图片上传功能的方法
Oct 08 PHP
Laravel 加载第三方类库的方法
Apr 20 PHP
Laravel 默认邮箱登录改成用户名登录的实现方法
Aug 12 PHP
使用laravel根据用户类型来显示或隐藏字段
Oct 17 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下MAIL的另一解决方案
2006/10/09 PHP
浅析PHP编程中10个最常见的错误
2014/08/08 PHP
php 数组元素快速去重
2017/05/05 PHP
PHP实现获取第一个中文首字母并进行排序的方法
2017/05/09 PHP
深入理解PHP的远程多会话调试
2017/09/21 PHP
提高代码性能技巧谈—以创建千行表格为例
2006/07/01 Javascript
javascript中关于break,continue的特殊用法与介绍
2012/05/24 Javascript
Three.js源码阅读笔记(物体是如何组织的)
2012/12/27 Javascript
js下拉框二级关联菜单效果代码具体实现
2013/08/03 Javascript
jquery-syntax动态语法着色示例代码
2014/05/14 Javascript
单元选择合并变色示例代码
2014/05/26 Javascript
jquery手风琴特效插件
2015/02/04 Javascript
12个超实用的JQuery代码片段
2015/11/02 Javascript
JavaScript实现form表单的多文件上传
2020/03/27 Javascript
vue缓存的keepalive页面刷新数据的方法
2019/04/23 Javascript
angular inputNumber指令输入框只能输入数字的实现
2019/12/03 Javascript
浅谈javascript如何获取文件后缀名
2020/08/07 Javascript
在vue中嵌入外部网站的实现
2020/11/13 Javascript
Python实现设置windows桌面壁纸代码分享
2015/03/28 Python
python中requests模块的使用方法
2015/04/08 Python
python解决Fedora解压zip时中文乱码的方法
2016/09/18 Python
Python动刷新抢12306火车票的代码(附源码)
2018/01/24 Python
详谈python3中用for循环删除列表中元素的坑
2018/04/19 Python
ubuntu系统下使用pm2设置nodejs开机自启动的方法
2018/05/12 NodeJs
Python学习笔记之For循环用法详解
2019/08/14 Python
numpy中三维数组中加入元素后的位置详解
2019/11/28 Python
python+adb+monkey实现Rom稳定性测试详解
2020/04/23 Python
详解Python中第三方库Faker
2020/09/25 Python
详解Python中openpyxl模块基本用法
2021/02/23 Python
苹果Mac升级:MacSales.com
2017/11/20 全球购物
平面设计自荐信
2013/10/07 职场文书
护理实习自我鉴定
2013/12/14 职场文书
2014幼儿园教师个人工作总结
2014/11/08 职场文书
承诺函范文
2015/01/21 职场文书
2015年小学生自我评价范文
2015/03/03 职场文书
详解Oracle块修改跟踪功能
2021/11/07 Oracle