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)
Sep 04 PHP
LotusPhp笔记之:Logger组件的使用方法
May 06 PHP
使用cookie实现统计访问者登陆次数
Jun 08 PHP
解析thinkphp的左右值无限分类
Jun 20 PHP
PHP根据IP判断地区名信息的示例代码
Mar 03 PHP
phpmailer发送邮件之后,返回收件人是否阅读了邮件的方法
Jul 19 PHP
php中socket的用法详解
Oct 24 PHP
PHP文件读取功能的应用实例
May 08 PHP
PHP编程快速实现数组去重的方法详解
Jul 22 PHP
PHP利用pdo_odbc实现连接数据库示例【基于ThinkPHP5.1搭建的项目】
May 13 PHP
PHP 文件写入和读取操作实例详解【必看篇】
Nov 04 PHP
Laravel框架Eloquent ORM修改数据操作示例
Dec 03 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
回答PHPCHINA上的几个问题:URL映射
2007/02/14 PHP
smarty内置函数config_load用法实例
2015/01/22 PHP
javascript实现的listview效果
2007/04/28 Javascript
JavaScript中null与undefined分析
2009/07/25 Javascript
用js实现小球的自由移动代码
2013/04/22 Javascript
jsonp原理及使用
2013/10/28 Javascript
JS数组的遍历方式for循环与for...in
2014/07/31 Javascript
jquery得到iframe src属性值的方法
2014/09/25 Javascript
使用CoffeeScrip优美方式编写javascript代码
2015/10/28 Javascript
轻松搞定jQuery.noConflict()
2016/02/15 Javascript
简述JavaScript提交表单的方式 (Using JavaScript Submit Form)
2016/03/18 Javascript
js+html5实现canvas绘制网页时钟的方法
2016/05/21 Javascript
jquery select2的使用心得(推荐)
2016/12/04 Javascript
JavaScript中Object值合并方法详解
2017/12/22 Javascript
js技巧之十几行的代码实现vue.watch代码
2018/06/09 Javascript
JavaScript事件发布/订阅模式原理与用法分析
2018/08/21 Javascript
微信小程序之裁剪图片成圆形的实现代码
2018/10/11 Javascript
vue中使用mxgraph的方法实例代码详解
2019/05/17 Javascript
vue3修改link标签默认icon无效问题详解
2019/10/09 Javascript
解决echarts数据二次渲染不成功的问题
2020/07/20 Javascript
Vue指令实现OutClick的示例
2020/11/16 Javascript
python 类对象和实例对象动态添加方法(分享)
2017/12/31 Python
python删除过期log文件操作实例解析
2018/01/31 Python
TensorFlow实现创建分类器
2018/02/06 Python
Python实现的基于优先等级分配糖果问题算法示例
2018/04/25 Python
pyqt实现.ui文件批量转换为对应.py文件脚本
2019/06/19 Python
Python实现多线程/多进程的TCP服务器
2019/09/03 Python
Python面向对象中类(class)的简单理解与用法分析
2020/02/21 Python
自定义实现 PyQt5 下拉复选框 ComboCheckBox的完整代码
2020/03/30 Python
Python爬虫入门教程02之笔趣阁小说爬取
2021/01/24 Python
使用phonegap获取位置信息的实现方法
2017/03/31 HTML / CSS
小学后勤管理制度
2014/01/14 职场文书
《登鹳雀楼》教学反思
2014/04/09 职场文书
教师师德演讲稿
2014/05/06 职场文书
教师素质教育心得体会
2016/01/19 职场文书
选对餐饮营销策略,营业额才会上涨
2019/08/27 职场文书