2017-01-12 1 views
0

다음은 내가 디렉토리에 파일을 업로드하기 위해 사용되는 코드입니다. 그것은 잘 작동합니다. 내 주요 질문은 : 난 그렇게 아래하려고 노력했다이름 바꾸기 업로드 된 파일 일부 오류?

: 다중 파일을 업로드 할 때

function get_unique_filename($name) { 
    $imgExt = strtolower(pathinfo($name,PATHINFO_EXTENSION)); 
    $date = new DateTime(); 
    $date= $date->getTimestamp(); 
    $newname ="bogen_". substr(hash('ripemd160',$date),0,12) .".".$imgExt; 
    return $newname; 
} 

function upload(){ 
    $valid_formats = array("jpg", "png"); 

    $max_file_size = 1024*3000; 

    $path = "../uploads/images/"; 

    $count = 0; 


    if(isset($_POST) and $_SERVER['REQUEST_METHOD'] == "POST"){ 

     foreach ($_FILES['files']['name'] as $f => $name){ 
      if ($_FILES['files']['error'][$f] == 4) { 
       continue; 
      } 
      if ($_FILES['files']['error'][$f] == 0) {   
       if ($_FILES['files']['size'][$f] > $max_file_size) { 
        $message[] = "$name is too large!."; 
        continue; 
       } 
       elseif(! in_array(pathinfo($name, PATHINFO_EXTENSION), $valid_formats)){ 
        $message[] = "$name is not a valid format"; 
        continue; // Skip invalid file formats 
       } 

       // No error found! Move uploaded files 
       else{ 
if(move_uploaded_file($_FILES["files"]["tmp_name"][$f], $path.$this->get_unique_filename($name))){ 
         $count++; // Number of successfully uploaded file 

         // save name to database 
         $this->name = $newname; 

         if($this->create()){ 
          // successfully added to databaes 
         } 
        } 
       } 
      } 
     } 
    } 
} 

내가 같은 파일 이름 및 파일을 얻을 것이다 ... 어떻게 문제를 해결할 수 : same file name

답변

1

당신은 파일이 동일한 이름으로 존재하는지 확인해야하고 존재하는 경우 해당 파일의 이름을 변경해야합니다.

function get_unique_filename($name) { 
    $imgExt = strtolower(pathinfo($name,PATHINFO_EXTENSION)); 
    $date = new DateTime(); 
    $date = $date->getTimestamp(); 
    $dir = "../uploads/images/"; 
    $i = 0; 
    do { 
     $newname ="bogen_". substr(hash('ripemd160',$date),0,12); 
     $image_name = $newname . ($i > 0 ? "_($i)" : "") . "." . $imgExt; 
     $i++; 
     $path = $dir . $image_name; 
    } while(file_exists($path)); 
    return $newname; 
} 
+0

확인 ~~ 좋은 ~~~~~~~ –

1

get_unique_filename($name)

에서 + 추가 : sleep(1);

function get_unique_filename($name) { 
    sleep(1); 
    $imgExt = strtolower(pathinfo($name,PATHINFO_EXTENSION)); 
    $date = new DateTime(); 
    $date= $date->getTimestamp(); 
    $newname ="bogen_". substr(hash('ripemd160',$date),0,12) .".".$imgExt; 
    return $newname; 
} 
관련 문제