2013-05-29 107 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