Descarga de un blob con JavaScript o TypeScript

En este artículo se muestra cómo descargar un blob con la biblioteca cliente de Azure Storage para JavaScript. Puede descargar datos de blobs en varios destinos, como una ruta de archivo local, un flujo o una cadena de texto.

Requisitos previos

  • Los ejemplos de este artículo asumen que ya tiene un proyecto configurado para trabajar con la librería cliente Azure Blob Storage para JavaScript. Para obtener más información sobre la configuración del proyecto, incluida la instalación de paquetes, la importación de módulos y la creación de un objeto cliente autorizado para trabajar con recursos de datos, consulte Introducción a Azure Blob Storage y JavaScript.
  • El mecanismo de autorización debe tener permisos para realizar una operación de descarga. Para obtener más información, consulte la guía de autorización para la siguiente operación de la API de REST:

Descargar un blob

Puede usar cualquiera de los métodos siguientes para descargar un blob:

Descargar en una ruta de archivo

En el siguiente ejemplo se descarga un blob mediante una ruta de archivo con el método BlobClient.downloadToFile. Este método solo está disponible en el entorno de ejecución de Node.js:

async function downloadBlobToFile(containerClient, blobName, localFilePath) {

    const blobClient = containerClient.getBlobClient(blobName);
    
    await blobClient.downloadToFile(localFilePath);
}

Descarga como una secuencia

En el ejemplo siguiente se descarga un blob mediante la creación de un objeto de secuencia grabable Node.js y, a continuación, se canaliza a esa secuencia con el método BlobClient.download.

async function downloadBlobAsStream(containerClient, blobName, writableStream) {

    const blobClient = containerClient.getBlobClient(blobName);

    const downloadResponse = await blobClient.download();

    downloadResponse.readableStreamBody.pipe(writableStream);
}

Descarga en una cadena

En el ejemplo siguiente de Node.js se descarga un blob en una cadena con el método BlobClient.download. En Node.js, los datos de tipo blob se devuelven en un readableStreamBody.

async function downloadBlobToString(containerClient, blobName) {

    const blobClient = containerClient.getBlobClient(blobName);

    const downloadResponse = await blobClient.download();

    const downloaded = await streamToBuffer(downloadResponse.readableStreamBody);
    console.log('Downloaded blob content:', downloaded.toString());
}

function streamToBuffer(readableStream) {
    return new Promise((resolve, reject) => {
        const chunks = [];
        readableStream.on('data', (data) => {
            chunks.push(data instanceof Buffer ? data : Buffer.from(data));
        });
        readableStream.on('end', () => {
            resolve(Buffer.concat(chunks));
        });
        readableStream.on('error', reject);
    });
}

Si está trabajando con JavaScript en el explorador, los datos de blob se devuelven en un blobBody de promesa. Para obtener más información, consulte el ejemplo de uso de exploradores en BlobClient.download.

Validación de transferencia de datos al descargar

La validación de transferencia con CRC64-NVME proporciona integridad de datos de nivel de cliente para Azure Blob Storage, lo que le permite comprobar que los datos enviados por la aplicación son los mismos datos almacenados y leídos de Azure. Cuando está habilitado, el SDK de Blob calcula y valida sumas de comprobación CRC64-NVME en las operaciones de carga y descarga, mientras que el servicio calcula y valida de forma independiente sumas de comprobación CRC64-NVME para los datos que recibe y devuelve. La validación se realiza en cada solicitud y en todo el flujo de datos, lo que garantiza que todo el blob se comprueba incluso cuando los datos se transfieren en particiones, como cargas de bloques o lecturas de intervalo. Consulte Formato de cuerpo estructurado para obtener más detalles.

Las opciones de validación de transferencia se pueden definir en el nivel de cliente mediante BlobClientConfig, que aplica las opciones de validación a todos los métodos a los que se llama desde una instancia de BlobClient . Como alternativa, puede invalidar las opciones de validación de transferencia en el nivel de operación a través de opciones, como BlobDownloadOptions.

const blobServiceClient = new BlobServiceClient(
   `https://${account}.blob.core.windows.net`,
   new DefaultAzureCredential(),
   {
     uploadContentChecksumAlgorithm: "StorageCrc64",
     downloadContentChecksumAlgorithm: "StorageCrc64",
   }
);

Recursos

Para más información sobre cómo descargar blobs con la biblioteca cliente de Azure Blob Storage para JavaScript, consulte los recursos siguientes.

Ejemplos de código

Visualización de ejemplos de código de este artículo (GitHub):

Operaciones de API REST

El SDK de Azure para JavaScript contiene bibliotecas que se crean a partir de la API REST de Azure, lo que le permite interactuar con las operaciones de API REST a través de paradigmas conocidos de JavaScript. Los métodos de la biblioteca cliente para descargar blobs usan la siguiente operación de API de REST:

Recursos de la biblioteca cliente

  • Este artículo forma parte de la guía para desarrolladores de Blob Storage para JavaScript/TypeScript. Para obtener más información, consulte la lista completa de artículos de la guía para desarrolladores en Compilación de la aplicación JavaScript/TypeScript.