Home  >  Article  >  Backend Development  >  Solution to the problem of name conflict when batch uploading in TP3.2

Solution to the problem of name conflict when batch uploading in TP3.2

巴扎黑
巴扎黑Original
2017-08-06 16:13:071216browse

This article mainly introduces TP3.2 to batch upload files or pictures in detail, and the solution to the conflict problem with the same name. It has certain reference value. Interested friends can refer to this article

The example shares the specific code for batch uploading files or pictures in TP3.2 and solves the problem of conflicts with the same name for your reference. The specific content is as follows

1, html


<form action="{:U(&#39;Upload/index&#39;)}" 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 = &#39;./Uploads/&#39;;
        $upload->savePath = &#39;image/&#39;;
        //$upload->saveName = date(&#39;YmdHis&#39;).&#39;-&#39;.randomkeys(3);//msectime(),毫秒数13位
        $upload->saveName = &#39;msectime&#39;;   //自定义函数,采用13位毫秒和3位随机数
        $upload->exts   = array(&#39;jpg&#39;, &#39;gif&#39;, &#39;png&#39;, &#39;jpeg&#39;);
        $upload->autoSub = true;
        $upload->subName = array(&#39;date&#39;,&#39;Ymd&#39;);
        
        /* 判断$_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(&#39;code&#39;=>200,&#39;id&#39;=>$img_id,&#39;name&#39;=>$img_name));exit;
            }else{
              echo json_encode(array(&#39;code&#39;=>0,&#39;msg&#39;=>$upload->getError()));exit;
            }
          }
        }
        if(count($_FILES)){
          $info = $upload->upload();//如果是二维数组,使用批量上传文件的方法
          if(!$info){
            $this->error($upload->getError());
            exit;
          }
          $img_url = &#39;/Uploads/&#39;.$info[0][&#39;savepath&#39;].$info[0][&#39;savename&#39;];
          $res = array(&#39;imgPath1&#39;=>$img_url,code=>$img_url,&#39;msg&#39;=>$info);
          echo json_encode($res);
        }        
      }   
}

3. Core: Many friends use the saveName attribute when using the TP3.2 framework. It got stuck, and the reason was that the upload server was processing millions of microseconds, which was very fast.

Solution: saveName = 13 digits of milliseconds + 3 digits of random number, perfect solution, specific code:


//返回当前的毫秒时间戳和随机数合并的字符串
function msectime() {
  list($msec, $sec) = explode(&#39; &#39;, microtime());
  $msectime = (float)sprintf(&#39;%.0f&#39;, (floatval($msec) + floatval($sec)) * 1000).randomkeys(3);
  return $msectime;
}

The above is the detailed content of Solution to the problem of name conflict when batch uploading in TP3.2. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn