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 excel类 phpExcel使用方法介绍
Aug 21 PHP
编写PHP脚本来实现WordPress中评论分页的功能
Dec 10 PHP
自定义min版smarty模板引擎MinSmarty.class.php文件及用法
May 20 PHP
mysql desc(DESCRIBE)命令实例讲解
Sep 24 PHP
PHP实现限制IP访问及提交次数的方法详解
Jul 17 PHP
thinkphp分页集成实例
Jul 24 PHP
PHP数组去重的更快实现方式分析
May 09 PHP
Laravel源码解析之路由的使用和示例详解
Sep 27 PHP
PHP基于openssl实现的非对称加密操作示例
Jan 11 PHP
PHP实现文字写入图片功能
Feb 18 PHP
关于Curl在Swoole协程中的解决方案详析
Sep 12 PHP
PHP实现文件上传操作和封装
Mar 04 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+mysql查询优化简单实例
2015/01/13 PHP
YII中Ueditor富文本编辑器文件和图片上传的配置图文教程
2017/03/15 PHP
CI框架实现创建自定义类库的方法
2018/12/25 PHP
yii2 在控制器中验证请求参数的使用方法
2019/06/19 PHP
php与阿里云短信接口接入操作案例分析
2020/05/27 PHP
Ajax+Json 级联菜单实现代码
2009/10/27 Javascript
JavaScript字符串插入、删除、替换函数使用示例
2013/07/25 Javascript
js 获取radio按钮值的实例
2013/08/17 Javascript
动态创建按钮的JavaScript代码
2016/01/29 Javascript
Bootstrap多级菜单的实现代码
2017/05/23 Javascript
Vue通过URL传参如何控制全局console.log的开关详解
2017/12/07 Javascript
微信小程序App生命周期详解
2018/01/31 Javascript
使用angularjs.foreach时return的问题解决
2018/09/30 Javascript
Vue 事件处理操作实例详解
2019/03/05 Javascript
Vue中util的工具函数实例详解
2019/07/08 Javascript
ES6基础之字符串和函数的拓展详解
2019/08/22 Javascript
vue 组件内获取actions的response方式
2019/11/08 Javascript
JS对日期操作封装代码实例
2019/11/08 Javascript
javascript异常处理实现原理详解
2020/02/17 Javascript
Javascript实现简易天数计算器
2020/05/18 Javascript
vue中jsonp插件的使用方法示例
2020/09/10 Javascript
python统计一个文本中重复行数的方法
2014/11/19 Python
python中json格式数据输出的简单实现方法
2016/10/31 Python
python opencv检测目标颜色的实例讲解
2018/04/02 Python
查看Django和flask版本的方法
2018/05/14 Python
python线程的几种创建方式详解
2019/08/29 Python
详解一种用django_cache实现分布式锁的方式
2019/09/01 Python
Lookfantastic美国/加拿大:英国知名美妆购物网站
2019/03/27 全球购物
微博营销计划书
2014/01/10 职场文书
十佳教师事迹材料
2014/01/11 职场文书
2014迎新年晚会策划方案
2014/02/23 职场文书
中国好声音华少广告词
2014/03/17 职场文书
党员岗位承诺书
2014/03/25 职场文书
企业总经理助理岗位职责
2014/09/12 职场文书
企业年检委托书范本
2014/10/14 职场文书
2015年感恩母亲节的演讲稿
2015/03/18 职场文书