从 Azure Blob 存储下载文件的示例

3

我可以通过Node/Express将文件上传到Azure Blob存储中,但是发现很少有关于如何下载文件的完整文档和示例。我在教程页面上找到了这个,但是没有成功:

blobSvc.getBlobToStream('mycontainer', 'myblob', fs.createWriteStream('output.txt'), function(error, result, response){
  if(!error){
    // blob retrieved
  }
});

有人使用过node.js/express从Azure Blob存储下载文件吗?您是使用Azure,还是其他方法(例如Request)?您能分享如何从Azure获取文件并将其流式传输到文件夹中吗?

2个回答

1

这里有一份完整的使用Azure Storage Blobs与Node.js 教程。教程提到了getBlobToLocalFile,听起来这可能是你正在寻找的内容。该方法的语法应该与getBlobToStream非常相似,但是您将提供文件路径而不是流。


1
我正在创建一个函数,它可以下载一个虚拟文件夹中的Blob,并返回一个zip文件。最简单的实现方式是使用getBlobToLocalFile将它们作为文件进行下载、导出为.zip文件,然后删除临时文件。 这可能不是最佳解决方案,但更容易实现。 我知道这不是最有效的方法,但对我来说已经足够好了。
第1步:获取Blob列表:
 blobService.listBlobsSegmentedWithPrefix(
  containerName,
  prefix,
  null,
  { delimiter: "", maxResults: 100 },
  (err, result) => {
    if (err) {
      reject(err);
    } else {
      resolve(result.entries);
    }
  }
);

步骤2,本地保存:

 blobs.map(blob => {
  blobService.getBlobToLocalFile(
    containerName,
    blob.name,
    `${baseDir}/${blob.name}`,
    (err, blob) => {
      if (err) {
        //handle error
      } else {
        count++;
        //do something after they all save
    }
  );
});

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接