我目前正在成功上传单个文件,表单如下:
<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>并使用以下脚本:
<?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";
}
?>我现在尝试允许用户从表单中选择三个不同的文件。我找到了一些指南,说明如何做类似的事情,但我不太能让它工作。
我修改了表单,如下所示(包括三个输入):
<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>但是我不确定如何修改php来处理这三个文件。我知道我需要遍历_FILES,但是我尝试过的所有东西都不起作用。如有任何建议,我们将不胜感激。
发布于 2012-01-07 00:33:42
每个文件元素必须有一个唯一的名称,或者使用PHP的数组简写形式:
<input type="file" name="file1" />
<input type="file" name="file2" />或
<input type="file" name="file[]" />
<input type="file" name="file[]" />记住- name属性定义如何在服务器上标识该字段,如果多次使用相同的名称,则在解析提交的数据时,PHP将用最新的副本覆盖以前的副本。数组符号([])告诉PHP,您打算有多个同名的字段,并且它找到的每个副本都应该添加到一个数组中,而不是覆盖。
对于唯一名称版本,您将像处理单个文件一样处理每个版本。
对于数组版本,PHP的设计很愚蠢,需要稍有不同的处理。您最终得到一个$_FILES数组,它看起来像
$_FILES = array(
'fieldname' => array(
'name' => array(
0 => 'first file',
1 => 'second file',
etc...
)
)
)发布于 2012-01-07 00:32:50
你需要改变
<input name="file" />至
<input name="file[]" />使它们成为一个数组。
然后,在您的脚本中,将它们引用为:
$_FILES['file']['name'][0]; // first file
$_FILES['file']['name'][1]; // second file注意:您可以将name替换为通常在单个文件上使用的任何其他文件属性(例如,大小、类型等)。
或者,您可以为它们指定不同的名称:
<input name="firstfile" />
<input name="secondfile" />然后在你的脚本中:
$_FILES['firstfile']; // first file
$_FILES['secondfile']; // second file发布于 2013-01-08 21:33:34
您可以在单个输入中选择多个文件,如下所示。
<input type="file" name="pic[]" id="pic" accept="image/*" multiple="multiple"/>此输入框可通过按can键接受多个文件。现在您可以在php中访问它们,如下所示
$_FILES['file']['name'][0]; // first file
$_FILES['file']['name'][1]; // second filehttps://stackoverflow.com/questions/8761066
复制相似问题