javascript - 在 javascript 中通过单个操作从 Azure Blob URL 列表下载多个文件,无需压缩
问题描述
我正在尝试在我的网站上为 Azure blob 创建一个简单的下载实用程序。截至目前,我有以下设计。
基本上是数据表中所有文件的列表和一个下载按钮。单击此按钮后,我可以获得所有相应 blob 的 URL 列表。
要全部下载它们,目前我正在压缩这些文件并一次性下载。使用这种方法,问题是我需要将所有文件放入浏览器内存中,然后压缩它们。因此,从技术上讲,所有下载都在压缩过程开始之前进行。我不想让浏览器不必要地压缩 GB 的数据,或者试图将这么多数据保存在 RAM 中。
现在,我正在尝试弄清楚是否可以让浏览器使用 URL 下载所有文件,而不是先将它们下载到浏览器内存中。
我曾尝试直接遍历 URL,但我总是只下载最后一个文件。另外,图像总是直接打开而不是下载。
下面是我尝试循环的代码。
function downloadAll(urls) {
var link = document.createElement('a');
link.setAttribute('download', null);
link.style.display = 'none';
document.body.appendChild(link);
for (var i = 0; i < urls.length; i++) {
link.setAttribute('href', urls[i]);
link.click();
}
document.body.removeChild(link);
}
此代码始终下载最后一个文件。
所以,我要么下载内存中的所有文件,然后压缩它们,要么只允许下载单个文件。还有其他方法可以尝试吗?也许在页面中打开隐藏的标签?
解决方案
推荐阅读
- html - 屏幕阅读器如何处理由标签(而不是空格)分隔的文本?
- wix - 用于 wix 自定义操作的 Liblog 适配器
- wpf - Wpf使用棱镜动态地将更多视图添加到tabcontrol
- android - 将背压上的底部导航项状态从活动更改为主页片段
- c# - 用我的链接替换字符串中的链接
- python - 重命名具有任意顺序和重复列名的多索引列
- sql - 在具有大量活动用户的项目中使用 ASP 身份用户
- reactjs - 卸载时 React Progressive Web App 添加到主屏幕不起作用
- postgresql - PostgreSQL - 为具有多对多关系的多个表创建数据库视图
- angular - 如何使用 Ionic 4 检测平台