2012-06-01 66 views
0

我想用一個表單文章上傳兩個文件,但是我的表單只會上傳第一個文件,而不會遍歷第二個文件並上傳。任何想法爲什麼?我使用的代碼如下。用php上傳多個文件

在此先感謝。

<?php 

$upload = $_POST['upload']; 
$enteredPassword = $_POST['password']; 
$uploadedFiles = $_FILES; 
$password = "************"; 

// Where the file is going to be placed 
$target_path = ""; 

//interger count 
$i = 0; 

//upload the files 
if ($upload == true && $enteredPassword == $password) { 
foreach($uploadedFiles as $uploadedFile) { 
    $target_path = $target_path . $uploadedFile['name'][$i]; 

    if(move_uploaded_file($uploadedFile['tmp_name'][$i], $target_path)) { 
     echo "<p>The file ". $uploadedFile['name'][$i]. 
     " has been uploaded.</p>"; 
    } else{ 
     echo "<p>There was an error uploading the {$uploadedfile['name']}, please try again!</p>"; 
    } 
    $i++; 
} 
} 
?> 

<ul> 
<form enctype="multipart/form-data" action="" method="post"> 
    <input type="hidden" name="upload" value="true" /> 
    <li>Choose a file to upload:</li> 
    <li><input name="userfile[]" type="file" size="40" /></li> 
    <li><input name="userfile[]" type="file" size="40" /></li> 
    <li>Enter password for file upload:</li> 
    <li><input name="password" type="password" size="40" /></li> 
    <li><input type="submit" value="Upload File" /></li> 
</form> 
</ul> 

回答

0

由於$ _FILES數組中只有一個元素$ _FILES [「userfile」],因此會出現該行爲。你可以嘗試這樣的事情來達到你想要的效果:

<?php 
if(isset($_POST["submit"])) 
{ 
    $upload = $_POST['upload']; 
    $enteredPassword = $_POST['password']; 
    $uploadedFiles = $_FILES["userfile"]; 
    $password = "12345"; 

    // Where the file is going to be placed 
    $base_path = "upload/"; 

    //upload the files 
    if ($upload == true && $enteredPassword == $password) { 
     foreach(array_combine($uploadedFiles["name"], $uploadedFiles["tmp_name"]) as $name => $tmp_name) { 
      $target_path = $base_path .$name; 

      if(move_uploaded_file($tmp_name, $target_path)) { 
       echo "<p>The file ". $name." has been uploaded.</p>"; 
      } 
      else 
      { 
       echo "<p>There was an error uploading the {$name}, please try again!</p>"; 
      } 
     } 
    } 
} 
?> 

<ul> 
<form enctype="multipart/form-data" action="" method="post"> 
    <input type="hidden" name="upload" value="true" /> 
    <li>Choose a file to upload:</li> 
    <li><input name="userfile[]" type="file" /></li> 
    <li><input name="userfile[]" type="file" /></li> 
    <li>Enter password for file upload:</li> 
    <li><input name="password" type="password" size="40" /></li> 
    <li><input type="submit" name="submit" value="Upload File" /></li> 
</form> 
</ul> 
+0

謝謝你的工作很棒:) –