所以我有一个httpd服务器在运行,它有一系列文件的链接。假设用户从文件列表中选择三个文件进行下载,它们位于:
mysite.com/file1
mysite.com/file2
mysite.com/file3
当他们点击下载按钮时,我希望他们从上面的链接下载这三个文件。
我的下载按钮类似于:
var downloadButton = new Ext.Button({
text: "Download",
handler: function(){
//download the three files here
}
});
11条答案
按热度按时间s4chpxco1#
最好的方法是压缩文件并链接到该文件:
另一种解决方案可以在这里找到:How to make a link open multiple pages when clicked
其中规定了以下内容:
HTML格式:
JS公司:
尽管如此,我还是会继续压缩文件,因为这个实现需要JavaScript,有时也会被阻塞为弹出窗口。
tyu7yeag2#
这是最适合我的方法,没有打开新的选项卡,只是下载了我需要的文件/图像:
7fyelxc53#
我喜欢对
for loop
内的a
元素执行click()
事件以下载多个文件,这只适用于数量有限的文件(在我的例子中是10个文件)。解释这种行为对我来说有意义的唯一原因是click()
事件执行的下载速度/间隔。我发现,如果我放慢
click()
事件的执行速度,那么我将能够下载所有文件。这就是对我有效的解决方案。
我每隔300毫秒执行一次下载事件
click()
。当没有更多文件下载urls.length == 0
时,我对interval
函数执行clearInterval
以停止下载。1cklez4t4#
您可以:
1.压缩所选文件并返回压缩文件。
1.打开多个弹出窗口,每个弹出窗口提示下载。
请注意,选项一客观上更好。
编辑找到选项三:https://stackoverflow.com/a/9425731/1803682
rslzwgfq5#
我使用window.location以不同的方式解决了这个问题。它可以在Chrome上运行,幸运的是它是我唯一支持的浏览器。可能对某人有用。我最初使用了Dan的答案,它也需要我在这里使用的超时时间,或者它只下载了一个文件。
ogsagwnx6#
plunker示例:https://plnkr.co/edit/XynXRS7c742JPfCA3IpE?p=preview
du7egjpx7#
这适用于所有浏览器(IE11、Firefox、Microsoft Edge、Chrome和Chrome Mobile)。我的文档位于多个选定元素中。当你尝试过快时,浏览器似乎有问题…所以我使用了一个超时。
此解决方案使用承诺:
watbbzwu8#
这是我找到的下载多个文件的最简单方法。
这应该对你有用。非常感谢。
abithluo9#
你可以去
iframe
注意:虽然这是一次下载多个文件的少数几种方法之一,但不创建弹出窗口,这对可以在浏览器中呈现的文件不起作用检查js注解
注2:有些浏览器可能会要求许可从同一页面下载多个文件
b1a1a
vdzxcuhz10#
这个解决方案对我来说非常好
dly7yett11#