如何在JS中下载多个文件

How to download multiple files in JS

我正在打开下载 links:

window.open(url,"_self")

这适用于一次下载 link。但是对于通过单击打开的所有其他 link,它们会被 Chrome 弹出窗口阻止程序捕获。

我需要这个功能,因为我想在我的网站上实现一个按钮,可以一次下载多个文件。就像这个数据由 data1.cab data2.cab data3.cab 组成,我不希望用户一个一个地下载它们,而是单个下载 link 来下载完整的数据集。

这是一种不良行为,所有弹出窗口阻止程序都会检测到。单击可以创建单个动作。此外,下载多个文件可以对用户隐藏许多文件,看起来像是恶意软件攻击。

最好的方法是压缩文件,或者如果压缩不可用,则显示所有文件及其自己的下载 link。这样用户就知道他在下载什么。

这不是理想的行为,因为用户可能会将其视为 malware/Virus 攻击。 您可以使用 https://stuk.github.io/jszip/ JSZip 库来压缩文件(图像数据),然后在客户端位置流式传输压缩文件 示例

var zip = new JSZip();
zip.file("Hello.txt", "Hello World\n");
var img = zip.folder("images");
img.file("smile.gif", imgData, {base64: true});
zip.generateAsync({type:"blob"})
.then(function(content) {
    // see FileSaver.js
    saveAs(content, "example.zip");
});

有一个新的 API 可以用来访问本地文件系统。 我已经在 here.

中提交了对类似问题的回答