4

我正在尝试制作一个允许同时上传多个文件的网页。我会将文件扩展名限制为最常见的图像,如 JPG、JPEG、PNG 和 GIF。

我已经对此进行了一些研究,并且在我所看到的任何地方都闪烁着这个和闪烁着那个。

我真的不想用闪光灯。尤其是 Flash 10,它禁用了启用多文件上传的最常用方法。

我正在寻找的是一种不断创建越来越多输入字段的方法,每个输入字段都有一个浏览按钮,然后在表单底部有一个最终上传按钮。用 Javascript 创建新的输入字段真的没什么大不了的。

所以我想知道这是如何工作的。我是否需要为所有文件输入字段提供相同的名称属性,以便我可以使用 1 段 PHP 代码来解决这个问题?或者 PHP 有什么方法可以检测到有多少文件被提交并简单地将用于解析文件的代码放在 for 循环中?

4

4 回答 4

12

您可以继续添加“文件”输入,但使用类似“上传 []”的名称

<input type="file" name="upload[]">

然后在 $_FILES['upload'] 你将有一个文件数组,你可以像这样循环

foreach ($_FILES['upload'] as $file) {
    echo $file['size'];
}
于 2008-11-09T20:16:29.440 回答
2

这是算法:

您将新的文件输入字段添加到表单中。每个字段必须有一个唯一的名称。然后,在服务器端,循环遍历 $_FILES 数组,查看已上传的文件数量并进行处理。

于 2008-11-09T20:14:06.293 回答
0

在使用 JavaScript 添加新的上传字段时,您还可以让 JavaScript 使用表单中上传字段的数量更新一些“隐藏”输入字段。这样,一旦您单击提交,该隐藏值应该被提交,并且为所有上传的文件解析出 $_FILES 数组将是微不足道的。

于 2008-11-09T20:23:17.273 回答
0

如果您对文件数量有合理的最大限制,最好在静态表单中包含那么多文件上传字段,然后使用 JavaScript 隐藏多余的字段,而不是动态创建它们。然后,当 JavaScript 不可用时,表单仍然可以工作。

旁注:从技术上讲,单个 HTML 文件上传表单已经是多个文件上传表单。根据 HTML 表单编码标准,应该能够在“浏览”对话框中选择多个文件,并将它们作为多部分/混合 MIME 结构提交。

然而,实际上几乎没有任何东西支持这一点。旧版本的 Opera 在客户端(而且,我认为是某种古老的测试浏览器,可能是 Viola),在服务器端有一些表单解析组件,但不是 PHP 内置。在任何情况下,用户界面都不是很实用,所以你不会错过太多。

于 2008-11-10T00:01:38.393 回答