我正在寻找某种方法来为文件上传按钮创建各种队列。使用以下代码:
<input type = 'file' name = 'file[]' multiple = 'multiple' />
现代浏览器允许您一次选择多个文件进行上传。但是,如果您再次单击该按钮并选择更多文件(例如从不同的文件夹中),则会删除当前选择的文件。有没有办法让新选择的文件集不覆盖旧集?
我正在寻找某种方法来为文件上传按钮创建各种队列。使用以下代码:
<input type = 'file' name = 'file[]' multiple = 'multiple' />
现代浏览器允许您一次选择多个文件进行上传。但是,如果您再次单击该按钮并选择更多文件(例如从不同的文件夹中),则会删除当前选择的文件。有没有办法让新选择的文件集不覆盖旧集?
虽然我不确定 HTML5,但出于安全原因,以前版本的 JS 不允许您这样做。您不能更改用户选择上传的文件,否则您可以更改文件路径并从他们的硬盘驱动器上传您想要的任何文件(例如,包括密码文件)。
对此的一种解决方案是拥有多个文件输入,而不是一个需要多个文件的输入。在用户选择要上传的文件时动态添加它们。例如,您可以将 onchange 侦听器添加到最新的文件输入,当用户选择了一个文件时,删除该侦听器,然后添加另一个文件输入(将 onchange 侦听器附加到此新文件输入)。当然,对于这些输入,您需要某种增量命名方案,并且您的服务器将需要处理生成的上传。
是的,我使用了一种方法。
听听这个; 当用户选择文件时,使用 CSS 隐藏此输入并生成另一个具有不同名称的输入。您将需要一个信息,其中有多少,因此您可以添加一个初始值为 1 的隐藏输入,并且每次都可以 +1。
希望这可以帮助。