>  기사  >  백엔드 개발  >  TP3.2에서 일괄 업로드 시 이름 충돌 문제 해결

TP3.2에서 일괄 업로드 시 이름 충돌 문제 해결

巴扎黑
巴扎黑원래의
2017-08-06 16:13:071163검색

이 글에서는 주로 파일이나 사진을 일괄 업로드하는 TP3.2에 대해 자세히 소개하고, 동일한 이름의 충돌 문제에 대한 해결책을 소개합니다. 관심 있는 친구들은 참고할 수 있습니다.

이 글의 예는 공유됩니다. .2 파일이나 사진을 일괄 업로드하고 동일한 이름의 충돌을 해결하는 구체적인 코드는 다음과 같습니다.

<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>


3. 핵심:

많은 친구들이 TP3.2 프레임워크를 사용할 때 saveName 속성에 갇히게 됩니다. 그 이유는 업로드 서버 처리 수준이 매우 빠르기 때문에 수백만 마이크로초가 걸리기 때문입니다.


솔루션:

saveName = 13자리 밀리초 + 3자리 난수, 완벽한 솔루션, 특정 코드:

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);
        }        
      }   
}

위 내용은 TP3.2에서 일괄 업로드 시 이름 충돌 문제 해결의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.