Baixar um blob com JavaScript ou TypeScript

Este artigo mostra como baixar um blob usando a Biblioteca de clientes de Armazenamento do Microsoft Azure para JavaScript. Você pode fazer download de dados de blob para vários destinos, incluindo um caminho de arquivo local, um stream ou uma string de texto.

Pré-requisitos

  • Os exemplos neste artigo pressupõem que você já tenha um projeto configurado para trabalhar com a biblioteca de clientes do Armazenamento de Blobs do Azure para JavaScript. Para saber mais sobre a configuração do seu projeto, incluindo a instalação de pacotes, a importação de módulos e a criação de um objeto cliente autorizado para trabalhar com recursos de dados, confira Introdução ao Armazenamento de Blobs do Azure e o JavaScript.
  • O mecanismo de autorização deve ter permissões para executar uma operação de download. Para saber mais, consulte as diretrizes de autorização para as seguintes operações de API REST:

Baixar um blob

Você pode usar qualquer um dos seguintes métodos para baixar um blob:

Download em um caminho de arquivo

O exemplo a seguir baixa um blob usando um caminho de arquivo com o método BlobClient.downloadToFile. Esse método só está disponível no runtime do Node.js:

async function downloadBlobToFile(containerClient, blobName, localFilePath) {

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

Baixar por streaming

O exemplo a seguir baixa um blob criando um objeto de fluxo gravável do Node.js e, em seguida, canalizando para esse fluxo com o método BlobClient.download.

async function downloadBlobAsStream(containerClient, blobName, writableStream) {

    const blobClient = containerClient.getBlobClient(blobName);

    const downloadResponse = await blobClient.download();

    downloadResponse.readableStreamBody.pipe(writableStream);
}

Download em uma cadeia de caracteres

O exemplo do Node.js a seguir baixa um blob em uma cadeia de caracteres com o método BlobClient.download. No Node.js, os dados de blob são retornados em um 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);
    });
}

Se você estiver trabalhando com JavaScript no navegador, os dados de blob serão retornados em um blobBody de promessa. Para saber mais, confira o exemplo de uso para navegadores em BlobClient.download.

Validação de transferência de dados no download

A validação de transferência com CRC64-NVME fornece integridade de dados no nível do cliente para Armazenamento de Blobs do Azure, permitindo que você verifique se os dados enviados pelo aplicativo são os mesmos dados armazenados e lidos de Azure. Quando habilitado, o SDK de Blob calcula e valida somas de verificação CRC64-NVME durante as operações de upload e download, enquanto o serviço calcula e valida de forma independente somas de verificação CRC64-NVME para os dados que recebe e retorna. A validação é executada em cada solicitação e em todo o fluxo de dados completo, garantindo que todo o blob seja verificado mesmo quando os dados são transferidos em partições, como uploads de bloco ou leituras de intervalo. Consulte o Formato do Corpo Estruturado para obter mais detalhes.

As opções de validação de transferência podem ser definidas no nível do cliente usando BlobClientConfig, que aplica opções de validação a todos os métodos chamados de uma instância de BlobClient . Como alternativa, você pode substituir as opções de validação de transferência no nível da operação por meio de opções, como BlobDownloadOptions.

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

Recursos

Para saber mais sobre como baixar blobs usando a biblioteca de clientes de Armazenamento de Blobs do Azure para JavaScript, consulte os recursos a seguir.

Exemplos de código

Exibir exemplos de código deste artigo (GitHub):

Operações da API REST

O SDK do Azure para JavaScript contém bibliotecas que se baseiam na API REST do Azure, permitindo a interação com as operações de API REST por meio de paradigmas conhecidos do JavaScript. Os métodos da biblioteca de clientes para baixar blobs usam a seguinte operação da API REST:

Recursos da biblioteca de clientes

  • Este artigo faz parte do guia para desenvolvedores do Armazenamento de Blobs para JavaScript/TypeScript. Para saber mais, consulte a lista completa de artigos do guia do desenvolvedor em Criar seu aplicativo JavaScript/TypeScript.