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 多进程 解决难题
Jun 22 PHP
php面向对象全攻略 (七) 继承性
Sep 30 PHP
PHP setTime 设置当前时间的代码
Aug 27 PHP
php中sprintf与printf函数用法区别解析
Feb 17 PHP
PHP不用递归遍历目录下所有文件的代码
Jul 04 PHP
php模拟用户自动在qq空间发表文章的方法
Jan 07 PHP
php实现将Session写入数据库
Jul 26 PHP
百度地图经纬度转换到腾讯地图/Google 对应的经纬度
Aug 28 PHP
PHP动态生成指定大小随机图片的方法
Mar 25 PHP
thinkphp3.x中cookie方法的用法分析
May 19 PHP
thinkphp实现附件上传功能
May 26 PHP
aec加密 php_php aes加密解密类(兼容php5、php7)
Mar 14 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
咖啡因含量是由谁决定的?低因咖啡怎么来?低因咖啡适合什么人喝
2021/03/06 新手入门
基于PHP读取csv文件内容的详解
2013/06/18 PHP
thinkphp实现面包屑导航(当前位置)例子分享
2014/05/10 PHP
thinkphp实现上一篇与下一篇的方法
2014/12/08 PHP
分享PHP源码批量抓取远程网页图片并保存到本地的实现方法
2015/12/01 PHP
php通过两层过滤获取留言内容的方法
2016/07/11 PHP
php计数排序算法的实现代码(附四个实例代码)
2020/03/31 PHP
js 事件小结 表格区别
2007/08/13 Javascript
JavaScript与Image加载事件(onload)、加载状态(complete)
2011/02/14 Javascript
关闭浏览器时提示onbeforeunload事件
2013/12/25 Javascript
图文详解JavaScript的原型对象及原型链
2016/08/02 Javascript
iOS和Android用同一个二维码实现跳转下载链接的方法
2016/09/28 Javascript
jQuery+datatables插件实现ajax加载数据与增删改查功能示例
2018/04/17 jQuery
详解vue-loader在项目中是如何配置的
2018/06/04 Javascript
Vue ElementUi同时校验多个表单(巧用new promise)
2018/06/06 Javascript
php结合js实现多条件组合查询
2019/05/28 Javascript
[01:01:51]EG vs VG Supermajor小组赛B组 BO3 第二场 6.2
2018/06/03 DOTA
Django的URLconf中使用缺省视图参数的方法
2015/07/18 Python
使用Python写一个贪吃蛇游戏实例代码
2017/08/21 Python
正确理解Python中if __name__ == '__main__'
2019/01/24 Python
python输出电脑上所有的串口名的方法
2019/07/02 Python
解决paramiko执行命令超时的问题
2020/04/16 Python
大女孩胸罩:Big Girls Bras
2016/12/15 全球购物
JSF面试题:Jsf中的核心类用那些?有什么作用?LiftCycle六大生命周期是什么?
2014/07/17 面试题
中学生学雷锋演讲稿
2014/04/26 职场文书
奥巴马竞选演讲稿
2014/05/15 职场文书
社区两委对照检查材料
2014/08/23 职场文书
个人诉讼委托书范本
2014/10/17 职场文书
2014年政风行风自查自纠报告
2014/10/21 职场文书
五一劳动节活动总结
2015/02/09 职场文书
在职证明格式样本
2015/06/15 职场文书
乡镇干部学习心得体会
2016/01/23 职场文书
初一数学教学反思
2016/02/17 职场文书
2019年浪漫婚礼证婚词
2019/06/27 职场文书
解读Vue组件注册方式
2021/05/15 Vue.js
MySQL中优化SQL语句的方法(show status、explain分析服务器状态信息)
2022/04/09 MySQL