Baixar um blob com TypeScript
Este artigo mostra como baixar um blob usando a biblioteca de cliente do Armazenamento do Azure para JavaScript. Você pode baixar dados de blob para vários destinos, incluindo um caminho de arquivo local, fluxo ou cadeia de caracteres de texto.
Pré-requisitos
- Os exemplos neste artigo pressupõem que você já tenha um projeto configurado para trabalhar com a biblioteca de cliente do Armazenamento de Blobs do Azure para JavaScript. Para saber mais sobre como configurar seu projeto, incluindo instalação de pacotes, importação de módulos e criação de um objeto cliente autorizado para trabalhar com recursos de dados, consulte Introdução ao Armazenamento de Blobs do Azure e TypeScript.
- 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 a seguinte operação da API REST:
Transferir um blob
Você pode usar qualquer um dos seguintes métodos para baixar um blob:
- BlobClient.download
- BlobClient.downloadToBuffer (disponível apenas em tempo de execução Node.js)
- BlobClient.downloadToFile (disponível apenas em tempo de execução Node.js)
Baixar para um caminho de arquivo
O exemplo a seguir baixa um blob usando um caminho de arquivo com o método BlobClient.downloadToFile . Este método só está disponível no tempo de execução do Node.js:
async function downloadBlobToFile(
containerClient: ContainerClient,
blobName,
fileNameWithPath
): Promise<void> {
const blobClient = await containerClient.getBlobClient(blobName);
const downloadResult = await blobClient.downloadToFile(fileNameWithPath);
if (!downloadResult.errorCode) {
console.log(
`download of ${blobName} success ${downloadResult.blobCommittedBlockCount}`
);
}
}
Download como um fluxo
O exemplo a seguir baixa um blob criando um objeto de fluxo gravável Node.js e, em seguida, canalizando para esse fluxo com o método BlobClient.download .
async function downloadBlobAsStream(
containerClient: ContainerClient,
blobName,
writableStream
) {
const blobClient: BlobClient = await containerClient.getBlobClient(blobName);
const downloadResponse = await blobClient.download();
if (!downloadResponse.errorCode && downloadResponse?.readableStreamBody) {
downloadResponse.readableStreamBody.pipe(writableStream);
console.log(`download of ${blobName} succeeded`);
}
}
Download para uma cadeia de caracteres
O exemplo de Node.js a seguir baixa um blob para uma cadeia de caracteres com o método BlobClient.download . No Node.js, os dados de blob retornam em um readableStreamBody
arquivo .
async function downloadBlobToString(
containerClient: ContainerClient,
blobName
): Promise<void> {
const blobClient: BlobClient = await containerClient.getBlobClient(blobName);
const downloadResponse: BlobDownloadResponseParsed =
await blobClient.download();
if (!downloadResponse.errorCode && downloadResponse.readableStreamBody) {
const downloaded = await streamToBuffer(
downloadResponse.readableStreamBody
);
if (downloaded) {
console.log('Downloaded blob content:', downloaded.toString());
}
}
}
async function streamToBuffer(readableStream) {
return new Promise((resolve, reject) => {
const chunks: Buffer[] = [];
readableStream.on('data', (data) => {
const content: Buffer = data instanceof Buffer ? data : Buffer.from(data);
chunks.push(content);
});
readableStream.on('end', () => {
resolve(Buffer.concat(chunks));
});
readableStream.on('error', reject);
});
}
Se você estiver trabalhando com JavaScript no navegador, os dados de blob retornarão em um blobBody de promessa. Para saber mais, consulte o exemplo de uso para navegadores em BlobClient.download.
Recursos
Para saber mais sobre como baixar blobs usando a biblioteca de cliente do Armazenamento de Blobs do Azure para JavaScript e TypeScript, consulte os recursos a seguir.
Operações da API REST
O SDK do Azure para JavaScript e TypeScript contém bibliotecas que se baseiam na API REST do Azure, permitindo que você interaja com operações da API REST por meio de paradigmas de linguagem familiares. Os métodos da biblioteca de cliente para baixar blobs usam a seguinte operação da API REST:
- Obter Blob (API REST)
Amostras de código
Veja exemplos de código deste artigo (GitHub):