2013-05-29 110 views
0

我有一個上傳多個文件的表單。我使用的php代碼工作正常,但我想重命名文件也不知道如何去做這件事。我認爲給這個名字加個時間戳是最好的答案。這裏是工作代碼到目前爲止:上傳時重命名多個文件

/* FILE UPLOAD CODE */ 
{ 
    $number_of_file_fields = 0; 
    $number_of_uploaded_files = 0; 
    $number_of_moved_files = 0; 
    $uploaded_files = array(); 
    $upload_directory = dirname(__file__) . '/uploads/'; //set upload directory 
    /** 
    * we get a $_FILES['file'] array , 
    * we procee this array while iterating with simple for loop 
    * you can check this array by print_r($_FILES['file']); 
    */ 
    for ($i = 0; $i < count($_FILES['file']['name']); $i++) { 
     $number_of_file_fields++; 
     if ($_FILES['file']['name'][$i] != '') { //check if file field empty or not 
      $number_of_uploaded_files++; 
      $uploaded_files[] = $_FILES['file']['name'][$i]; 
      if (move_uploaded_file($_FILES['file']['tmp_name'][$i], $upload_directory . $_FILES['file']['name'][$i])) { 
       $number_of_moved_files++; 
      } 

     } 

    } 

} 
/* END FILE UPLOAD CODE */ 

任何幫助什麼添加和在哪裏做到這一點將不勝感激。

回答

0

如果你想給相同的名稱所有上傳的文件,那麼你就可以通過使用$_GET獲取名稱。 例如:

<form action="upload.php" method="post"> \\ this would send it to your page 
<input type='text' size='30' name='filename'/> 
<input type='submit' /> 
</form> 

簡單地得到使用$_GET這樣

$name = $_GET['filename']; 

名稱並立即運行的代碼,但這個名字移動文件這樣

move_uploaded_file($_FILES['file']['tmp_name'][$i], $upload_directory .   $name[$i]) 
0

您可以指定新的文件名作爲move_uploaded_file()以第二個參數

例如:

move_uploaded_file($_FILES['file']['tmp_name'][$i], $upload_directory . "new_file_name"); 
+0

這工作,但如果2人上傳一個文件第二個覆蓋第一個,沒有文件擴展 – Michael

+0

我想我只是顯示如何給文件一個不同的名字whe你移動它。但是,我發現你仍然需要一個解決方案來生成一個新的獨特名字...... – Dan