使用PHP / Javascript进行多文件上传,无闪存

时间:2008-11-09 20:08:56

标签: php javascript file-upload

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

我已经对此进行了一些研究,无论在哪里,我都会看到闪光灯闪光灯。

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

我正在寻找的是一种不断创建越来越多输入字段的方法,每个字段都有一个浏览按钮,然后在表单底部有一个最终上传按钮。使用Javascript创建新的输入字段确实非常重要。

所以我想知道这是如何工作的。我是否需要为所有文件输入字段赋予相同的名称属性,以便我可以使用1段PHP代码来解决这个问题?或者,有没有办法让PHP检测出如何汇总多少文件,只需将用于解析文件的代码放在for-loop中?

4 个答案:

答案 0 :(得分:12)

您可以继续添加“文件”输入,但使用“upload []”

之类的名称
<input type="file" name="upload[]">

然后在$ _FILES ['upload']中你将有一个可以循环的文件数组,如

foreach ($_FILES['upload'] as $file) {
    echo $file['size'];
}

答案 1 :(得分:2)

以下是算法:

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

答案 2 :(得分:0)

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

答案 3 :(得分:0)

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

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

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