> 백엔드 개발 > PHP 튜토리얼 > TP3.2에서 이미지나 파일을 일괄 업로드할 때 동일한 이름 문제에 대한 PHP 솔루션

TP3.2에서 이미지나 파일을 일괄 업로드할 때 동일한 이름 문제에 대한 PHP 솔루션

巴扎黑
풀어 주다: 2023-03-14 17:24:02
원래의
2085명이 탐색했습니다.

이 문서의 예에서는 참고용으로 TP3.2에서 파일이나 그림을 일괄 업로드할 때 이름 충돌 문제를 해결하는 방법을 공유합니다. 구체적인 내용은 다음과 같습니다

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: TP3.2 프레임워크를 사용할 때 많은 친구들이 saveName 속성에서 멈췄습니다. 그 이유는 업로드 서버 처리 수준이 매우 빠른 수백만 마이크로초가 걸리기 때문입니다.

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

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

위 내용은 TP3.2에서 이미지나 파일을 일괄 업로드할 때 동일한 이름 문제에 대한 PHP 솔루션의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿