2012-07-21 88 views
3

我正在寻找一些方法来创建一个文件上传按钮的排序队列。使用以下代码:HTML多文件上传队列

<input type = 'file' name = 'file[]' multiple = 'multiple' /> 

现代浏览器允许您一次选择多个文件上传。但是,如果再次单击该按钮并选择更多文件(例如从不同的文件夹中删除),则会删除当前选定的文件。有没有办法让新选择的文件不覆盖旧的文件?

+0

当你看到它时,它往往是通过flash来完成的,因为正常的文件输入只允许你选择一个。 – Undefined 2012-07-21 23:12:33

+0

不一定。它可以使用XHR和iFrames(在旧版浏览器中)完成。看到我的答案。 – 2012-07-21 23:17:35

回答

0

是的,有一种方法我使用。

听这个;当用户选择文件时,用CSS隐藏该输入并生成另一个具有不同名称的输入。您需要知道其中有多少人,因为这样的原因,您可以添加初始值为1的隐藏输入,并且您每次都可以+1。

希望这会有所帮助。

+0

与此一起工作,因为这是我的工作。 – Lukas 2012-07-21 23:56:56

1

虽然我不确定HTML5,但以前的JS版本不会让你这样做,出于安全原因。您不能更改用户选择上传的文件,否则您可以更改文件路径并上传您需要的任何文件(例如,包括密码文件)。

对此的一个解决方案是具有多个文件输入,而不是单个文件输入多个文件。在用户选择要上传的文件时动态添加它们。例如,您可以将onchange侦听器添加到最新的文件输入,并且当用户选择文件时,删除侦听器,然后添加另一个文件输入(将onchange侦听器附加到此新文件输入)。当然,这些输入需要一些增量命名方案,而你的服务器需要处理最终的上传。