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
学习php过程中的一些注意点的总结
Oct 25 PHP
PHP的mysqli_query参数MYSQLI_STORE_RESULT和MYSQLI_USE_RESULT的区别
Sep 29 PHP
php 删除cookie方法详解
Dec 01 PHP
使用xampp搭建运行php虚拟主机的详细步骤
Oct 21 PHP
php中的登陆login实例代码
Jun 20 PHP
cakephp2.X多表联合查询join及使用分页查询的方法
Feb 23 PHP
thinkphp下MySQL数据库读写分离代码剖析
Apr 18 PHP
php实现数字补零的方法总结
Sep 12 PHP
PHP 并发场景的几种解决方案
Jun 14 PHP
使用Git实现Laravel项目的自动化部署
Nov 24 PHP
PHP 实现base64编码文件上传出现问题详解
Sep 01 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获取$_POST同名参数数组的实现介绍
2013/06/30 PHP
php实例分享之通过递归实现删除目录下的所有文件详解
2014/05/15 PHP
php使用pear_smtp发送邮件
2016/04/15 PHP
PHP实现可精确验证身份证号码的工具类示例
2018/05/31 PHP
PHP实现PDO操作mysql存储过程示例
2019/02/13 PHP
一个收集图片的bookmarlet(js 刷新页面中的图片)
2010/05/27 Javascript
php结合imgareaselect实现图片裁剪
2015/07/05 Javascript
javascript省市区三级联动下拉框菜单实例演示
2015/11/29 Javascript
js父页面中使用子页面的方法
2016/01/09 Javascript
JQuery中解决重复动画的方法
2016/10/17 Javascript
Form表单上传文件(type=&quot;file&quot;)的使用
2017/08/03 Javascript
js实现各浏览器全屏代码实例
2018/07/03 Javascript
关于layui时间回显问题的解决方法
2019/09/24 Javascript
微信小程序wxml列表渲染原理解析
2019/11/27 Javascript
vue 中url 链接左边的小图标更改问题
2019/12/30 Javascript
React中Ref 的使用方法详解
2020/04/28 Javascript
JavaScript监听键盘事件代码实现
2020/06/03 Javascript
vue实现移动端input上传视频、音频
2020/08/18 Javascript
基于python实现微信模板消息
2015/12/21 Python
Python使用matplotlib填充图形指定区域代码示例
2018/01/16 Python
用Python进行简单图像识别(验证码)
2018/01/19 Python
pytorch: tensor类型的构建与相互转换实例
2018/07/26 Python
解决Python获取字典dict中不存在的值时出错问题
2018/10/17 Python
CSS3 真的会替代 SCSS 吗
2021/03/09 HTML / CSS
html2canvas生成的图片偏移不完整的解决方法
2020/05/19 HTML / CSS
英国安全产品购物网站:The Safe Shop
2017/03/20 全球购物
Viking Direct荷兰:购买办公用品
2019/06/20 全球购物
十佳教师事迹材料
2014/01/11 职场文书
应届生自荐书
2014/06/23 职场文书
药店促销活动总结
2014/07/10 职场文书
幼儿园端午节活动方案
2014/08/25 职场文书
计算机专业自荐信
2015/03/05 职场文书
教师教育教学随笔
2015/08/15 职场文书
Mysql数据库中datetime、bigint、timestamp来表示时间选择,谁来存储时间效率最高
2021/08/23 MySQL
如何解决php-fpm启动不了问题
2021/11/17 PHP
MySQL新手入门进阶语句汇总
2022/09/23 MySQL