2017-01-12 6 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

OK ~~良い~~~~~~~ –

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; 
} 
関連する問題