gpt4 book ai didi

javascript - 如何在azure blob服务中等待操作完成

转载 作者:行者123 更新时间:2023-12-03 04:54:33 24 4
gpt4 key购买 nike

如何在 blob 服务上使用 async/await。我正在尝试下载和压缩文件夹,因此想等到下载完成,以便我可以继续压缩该文件。但由于异步行为,有时函数行为不当。

最新代码:

            const blobServiceClient = BlobServiceClient.fromConnectionString("connect string");

const containerClient = blobServiceClient.getContainerClient(containerName);

for await (const blob of containerClient.listBlobsFlat({ prefix: path })) {

if (fs.existsSync(fileUploadPath)) {
var sourceFilePath = fileUploadPath + '/' + project.id + '/' + blob.name;
if (!fs.existsSync(sourceFilePath)) {
fs.mkdir(require('path').dirname(sourceFilePath), { recursive: true }, async(err) => {
if (err) {
console.log("Failed to mkdir:" + err);
}
console.log(blob.name)
await containerClient.getBlobClient(blob.name).downloadToFile(sourceFilePath,0,undefined);

});
}
} else{
console.log('downloads folder does not configures!')
}

我有几个疑问,

  1. downloadToFile 的效率如何?它可以下载大尺寸的 blob 吗?
  2. 仅下载即时 blob,且数据不完整,并且不会下载子目录下的 blob。
  3. 我认为,流式传输数据是下载 Blob 的有效方法?是否有任何 API 可以将数据流式传输到本地,就像我们在旧库 (getBlobToStream) 中的 API 一样?

最佳答案

使用最新版本的Azure Storage Blob SDK ,您可以将现有代码转换为类似的代码:

const { BlobServiceClient, StorageSharedKeyCredential } = require("@azure/storage-blob");

const account = "<account>";
const accountKey = "<accountkey>";

const sharedKeyCredential = new StorageSharedKeyCredential(account, accountKey);
const blobServiceClient = new BlobServiceClient(
`https://${account}.blob.core.windows.net`,
sharedKeyCredential
);

const containerName = '<container name>';
const path = '<prefix>';

async function download() {
var containerClient = blobServiceClient.getContainerClient(containerName);
for await (const blob of containerClient.listBlobsFlat({ prefix: path })) {
await containerClient.getBlobClient(blob.name)
.downloadToFile(`./${blob.name}`);
}
}

download()
.then(() => console.log('Done'))
.catch((ex) => console.log(ex.message));

关于javascript - 如何在azure blob服务中等待操作完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72360163/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com