He seguido la documentación oficial para descargar blobs, pero descarga blob con metadatos y propiedades. Lo que debo hacer es descargar el archivo blob tal como está desde Azure Storage al sistema de archivos local con el nodo js. Tenga en cuenta que mi almacenamiento de blobs es privado.
A continuación se muestra el código que tengo a partir de ahora
const { BlobServiceClient } = require('@azure/storage-blob'); const { v1: uuidv1} = require('uuid'); async function main() { console.log('Azure Blob storage v12 - JavaScript quickstart sample'); // Quick start code goes here const AZURE_STORAGE_CONNECTION_STRING = process.env.AZURE_STORAGE_CONNECTION_STRING; const containerName = process.env.CONTAINER_NAME; // Create the BlobServiceClient object which will be used to create a container client const blobServiceClient = BlobServiceClient.fromConnectionString(AZURE_STORAGE_CONNECTION_STRING); // Get a reference to a container const containerClient = blobServiceClient.getContainerClient(containerName); const blockBlobClient = containerClient.getBlockBlobClient(process.env.BLOB_NAME); const downloadBlockBlobResponse = await blockBlobClient.download(0); console.log('\nDownloaded blob content...'); console.log('\t', await streamToString(downloadBlockBlobResponse.readableStreamBody)); } async function streamToString(readableStream) { return new Promise((resolve, reject) => { const chunks = []; readableStream.on("data", (data) => { chunks.push(data.toString()); }); readableStream.on("end", () => { resolve(chunks.join("")); }); readableStream.on("error", reject); }); } main().then(() => console.log('Done')).catch((ex) => console.log(ex.message))Para guardar el contenido del blob en su sistema de archivos local, simplemente puede usar el método downloadToFile .
Esencialmente cambie la siguiente línea de código:
const downloadBlockBlobResponse = await blockBlobClient.download(0);a
const downloadBlockBlobResponse = await blockBlobClient.downloadToFile('local-file-path'); Tampoco necesitaría el método streamToString para que pueda eliminarlo de manera segura.