首页 > 解决方案 > 在 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);
}

此代码始终下载最后一个文件。

所以,我要么下载内存中的所有文件,然后压缩它们,要么只允许下载单个文件。还有其他方法可以尝试吗?也许在页面中打开隐藏的标签?

标签: javascriptazure-storage

解决方案


推荐阅读