2012-06-01 45 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

谢谢你的工作很棒:) –