Cómo usar async/await en blob service. Estoy intentando descargar y comprimir la carpeta y, por lo tanto, quiero esperar hasta que se complete la descarga, para poder continuar y comprimir ese archivo.
Último código:
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!') }aquí tengo un par de dudas,
Con la última versión del SDK de Azure Storage Blob , puede convertir su código existente en algo así:
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));