zoukankan      html  css  js  c++  java
  • 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 ThinkUpload();// 实例化上传类
                    $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;
    }
  • 相关阅读:
    在docker中执行linux shell命令
    ASP.NET MVC Controller接收ajax post方式发送过来的json对象或数组数据
    EasyUI 1.4.4 DataGrid(大数据量) bufferview滚动时不加载下一页数据解决方案
    MVC 5 下,应用log4net收集异常信息
    ASP.NET 获取IP信息等探针
    Discuz!NT 3.5.2正式版与Asp.net网站会员信息整合
    打印HTML页面部分区域javascript代码
    微网站之浅见
    从客户端检测到危险的Request.Form值解决方案
    Ajax客户登陆验证
  • 原文地址:https://www.cnblogs.com/xuzhengzong/p/7268211.html
Copyright © 2011-2022 走看看