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;
    }
  • 相关阅读:
    表达式目录树(Expression)
    六大设计原则【单一职责】【里氏替换】【 迪米特法则】【依赖倒置原则】【接口隔离原则】【开闭原则】
    lambda,linq
    c#中的特性Attribute
    CentOS7部署Nginx
    NetCore项目的部署
    ABP+NetCore+Vue.js实现增删改查
    Abp数据库迁移注意事项
    MVC分页
    AspNet5 Changes to [Activate] in beta-5
  • 原文地址:https://www.cnblogs.com/xuzhengzong/p/7268211.html
Copyright © 2011-2022 走看看