如何强制/允许用户下载多个文件? (客户端)

2024-02-07

输入是可变数量的 URL(远程),所有链接图像资源。希望允许用户允许批量下载所有这些 URL。由于我们讨论的是 1000-2000 个图像资源,要求用户为每个 URL 单击“另存为...”是不可行的。

我最初的尝试是将所有图像下载到一个 blob 中(如何将加载的图像读取到 blob 中? https://stackoverflow.com/questions/13937494/how-to-read-loaded-image-into-a-blob,由于同源策略而不起作用),存档文件并允许用户下载它(所有客户端)。

我想知道有哪些可能的替代解决方案?无论采用哪种解决方案,都不能涉及随时将远程资源下载到服务器。


尽管这是不可能的,但我还是通过一些魔法在 Chrome 中成功做到了这一点。首先您需要设置download归因于您的所有链接 f.ex:

<a href="http://example.com/image1.jpg" download>download</a>
<a href="http://example.com/image2.jpg" download>download</a>

然后创建一个合成点击函数:

function makeClick(element) {
    var evt = element.ownerDocument.createEvent('MouseEvents');
    evt.initMouseEvent('click', true, true,
        element.ownerDocument.defaultView, 1, 0, 0, 0, 0, false,
        false, false, false, 1, null);
    element.dispatchEvent(evt);
}​

然后只需循环访问您的链接并调用它:

var links = document.getElementsByTagName('a');
for(var i=0;i<links.length; i++) {
    makeClick(links[i]);
}

这是一个演示:http://jsfiddle.net/37pFC/ http://jsfiddle.net/37pFC/

在 Chrome 中,您会收到一条警告,内容类似于“此网站希望您下载多个文件。允许吗?”但这可能是可以控制的。

免责声明:我没有在其他浏览器中尝试过,我认为它对跨浏览器不太友好。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何强制/允许用户下载多个文件? (客户端) 的相关文章

随机推荐