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 高效率写法 推荐
Feb 21 PHP
探讨PHP使用eAccelerator的API开发详解
Jun 09 PHP
解析PHP中intval()等int转换时的意外异常情况
Jun 21 PHP
PHP中使用asort进行中文排序失效的问题处理
Aug 18 PHP
php导出CSV抽象类实例
Sep 24 PHP
php实现Linux服务器木马排查及加固功能
Dec 29 PHP
php格式化金额函数分享
Feb 02 PHP
使用XHGui来测试PHP性能的教程
Jul 03 PHP
PHP使用微信开发模式实现搜索已发送图文及匹配关键字回复的方法
Sep 13 PHP
ThinkPHP框架获取最后一次执行SQL语句及变量调试简单操作示例
Jun 13 PHP
使用PHPExcel导出Excel表
Sep 08 PHP
PHP面向对象程序设计之多态性的应用示例
Dec 19 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和XSL stylesheets转换XML文档
2006/10/09 PHP
PHP file_get_contents设置超时处理方法
2013/09/30 PHP
在PHP模板引擎smarty生成随机数的方法和math函数详解
2014/04/24 PHP
destoon找回管理员密码的方法
2014/06/21 PHP
php筛选不存在的图片资源
2015/04/28 PHP
PHP实现留言板功能的详细代码
2017/03/25 PHP
php 类中的常量、静态属性、非静态属性的区别
2017/04/09 PHP
PHP编程计算文件或数组中单词出现频率的方法
2017/05/22 PHP
BOOM vs RR BO3 第二场2.13
2021/03/10 DOTA
javascript 进阶篇2 CSS XML学习
2012/03/14 Javascript
web的各种前端打印方法之jquery打印插件jqprint实现网页打印
2013/01/09 Javascript
js 调用父窗口的具体实现代码
2013/07/15 Javascript
js实现按一下删除键删除整个单词附demo
2014/09/05 Javascript
js兼容火狐获取图片宽和高的方法
2015/05/21 Javascript
JS实现点击按钮控制Div变宽、增高及调整背景色的方法
2015/08/05 Javascript
JS获取本周周一,周末及获取任意时间的周一周末功能示例
2017/02/09 Javascript
ES6教程之for循环和Map,Set用法分析
2017/04/10 Javascript
javascript实现二叉树遍历的代码
2017/06/08 Javascript
vue+springboot实现项目的CORS跨域请求
2018/09/05 Javascript
小程序二次贝塞尔曲线实现购物车商品曲线飞入效果
2019/01/07 Javascript
Python使用reportlab将目录下所有的文本文件打印成pdf的方法
2015/05/20 Python
详解Python 序列化Serialize 和 反序列化Deserialize
2017/08/20 Python
Python网络编程 Python套接字编程
2017/09/13 Python
PyQt5利用QPainter绘制各种图形的实例
2017/10/19 Python
TensorFlow高效读取数据的方法示例
2018/02/06 Python
python实现基于朴素贝叶斯的垃圾分类算法
2019/07/09 Python
Pandas实现dataframe和np.array的相互转换
2019/11/30 Python
解决在keras中使用model.save()函数保存模型失败的问题
2020/05/21 Python
市场部管理制度
2014/02/02 职场文书
草船借箭教学反思
2014/02/03 职场文书
亮化工程实施方案
2014/03/17 职场文书
企业法人授权委托书
2014/04/03 职场文书
四查四看自我剖析材料
2014/09/19 职场文书
爱国影片观后感
2015/06/18 职场文书
2016特色励志班级口号
2015/12/24 职场文书
GTX1650super好不好 gtx1650super显卡属于什么级别
2022/04/08 数码科技