2017-01-12 43 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; 
}