PHP上传:上传多个文件?

SB2*_*055 1 php file-upload file

我目前正在使用以下格式成功上传单个文件:

<html>
<body>

<form action="upload_file.php" method="post" enctype="multipart/form-data">
<label for="file">Filename:</label>
<input type="file" name="file" id="file" /> 

<br />
<input type="submit" name="submit" value="Submit" />
</form>

</body>
</html>
Run Code Online (Sandbox Code Playgroud)

并使用以下脚本:

<?php
error_reporting(E_ALL);



    if (($_FILES["file"]["size"] < 20000))
      {
      if ($_FILES["file"]["error"] > 0)
        {
        echo "Return Code: " . $_FILES["file"]["error"] . "<br />";
        }
      else
        {
        echo "Upload: " . $_FILES["file"]["name"] . "<br />";
        echo "Type: " . $_FILES["file"]["type"] . "<br />";
        echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb<br />";
        echo "Temp file: " . $_FILES["file"]["tmp_name"] . "<br />";


        $moved = move_uploaded_file($_FILES["file"]["tmp_name"], "C:/inetpub/wwwroot/PHP_Ramp/upload/" . $_FILES["file"]["name"]);

        if ($moved) {
            echo "Move: Success <br/>";
        }
        else {
            echo "Move Failed <br/>";
        }


          echo "Stored in: " . "C:/inetpub/wwwroot/PHP_Ramp/upload/" . $_FILES["file"]["name"];
          }
        }

    else
      {
      echo "Invalid file";
      }
    ?>
Run Code Online (Sandbox Code Playgroud)

我现在正试图让用户从表单中选择三个不同的文件.我找到了一些指南,展示了如何做类似的事情,但我无法让它发挥作用.

我修改了表格如下(包括三个输入):

<html>
<body>

<form action="upload_file.php" method="post" enctype="multipart/form-data">
<label for="file">Filename:</label>
<input type="file" name="file" id="file" /> 
<input type="file" name="file" id="file" />
<input type="file" name="file" id="file" />
<br />
<input type="submit" name="submit" value="Submit" />
</form>

</body>
</html>
Run Code Online (Sandbox Code Playgroud)

但我不知道如何修改php来处理所有三个文件.我知道我需要遍历_FILES,但我尝试过的一切都无法正常工作.任何指针将不胜感激.

Mar*_*c B 7

每个文件元素必须具有唯一的名称,或者使用PHP的数组简写:

<input type="file" name="file1" />
<input type="file" name="file2" />
Run Code Online (Sandbox Code Playgroud)

要么

<input type="file" name="file[]" />
<input type="file" name="file[]" />
Run Code Online (Sandbox Code Playgroud)

请记住 - 该name属性定义了如何在服务器上标识该字段,如果多次使用相同的名称,PHP将在解析提交的数据时用最新的副本覆盖以前的副本.数组表示法([])告诉PHP你想要多个具有相同名称的字段,并且它找到的每个副本都应该添加到一个数组中,而不是被覆盖.

对于唯一名称版本,您可以使用单个文件处理每个版本.

对于阵列版本,PHP具有设计愚蠢,需要稍微不同的处理.最终得到一个看起来像$ _FILES的数组

$_FILES = array(
    'fieldname' => array(
         'name' => array(
             0 => 'first file',
             1 => 'second file',
             etc...
         )
    )
)
Run Code Online (Sandbox Code Playgroud)