Baixar um blob com .NET
Este artigo mostra como baixar um blob usando a biblioteca de cliente do Armazenamento do Azure para .NET. Você pode baixar dados de blob para vários destinos, incluindo um caminho de arquivo local, fluxo ou cadeia de caracteres de texto. Você também pode abrir um fluxo de blob e ler a partir dele.
Pré-requisitos
- Subscrição do Azure - crie uma gratuitamente
- Conta de armazenamento do Azure - criar uma conta de armazenamento
- SDK .NET mais recente para seu sistema operacional. Certifique-se de obter o SDK e não o tempo de execução.
Configurar o ambiente
Se você não tiver um projeto existente, esta seção mostra como configurar um projeto para trabalhar com a biblioteca de cliente do Armazenamento de Blobs do Azure para .NET. As etapas incluem a instalação do pacote, a adição de using
diretivas e a criação de um objeto de cliente autorizado. Para obter detalhes, consulte Introdução ao Armazenamento de Blobs do Azure e ao .NET.
Instalar pacotes
No diretório do projeto, instale pacotes para o Armazenamento de Blobs do Azure e as bibliotecas de cliente do Azure Identity usando o dotnet add package
comando. O pacote Azure.Identity é necessário para conexões sem senha com os serviços do Azure.
dotnet add package Azure.Storage.Blobs
dotnet add package Azure.Identity
Adicionar using
diretivas
Adicione estas using
diretivas à parte superior do arquivo de código:
using Azure.Identity;
using Azure.Storage.Blobs;
using Azure.Storage.Blobs.Models;
using Azure.Storage.Blobs.Specialized;
Alguns exemplos de código neste artigo podem exigir diretivas adicionais using
.
Criar um objeto cliente
Para conectar um aplicativo ao Armazenamento de Blob, crie uma instância de BlobServiceClient. O exemplo a seguir mostra como criar um objeto cliente usando DefaultAzureCredential
para autorização:
public BlobServiceClient GetBlobServiceClient(string accountName)
{
BlobServiceClient client = new(
new Uri($"https://{accountName}.blob.core.windows.net"),
new DefaultAzureCredential());
return client;
}
Você pode registrar um cliente de serviço para injeção de dependência em um aplicativo .NET.
Você também pode criar objetos de cliente para contêineres ou blobs específicos. Para saber mais sobre como criar e gerenciar objetos de cliente, consulte Criar e gerenciar objetos de cliente que interagem com recursos de dados.
Autorização
O mecanismo de autorização deve ter as permissões necessárias para executar uma operação de download. Para autorização com o Microsoft Entra ID (recomendado), você precisa da função interna do RBAC do Azure RBAC Storage Blob Data Reader ou superior. Para saber mais, consulte as diretrizes de autorização para Obter Blob (API REST).
Transferir um blob
Você pode usar qualquer um dos seguintes métodos para baixar um blob:
Você também pode abrir um fluxo para ler a partir de um blob. O fluxo só baixa o blob à medida que o fluxo é lido. Pode utilizar um dos seguintes procedimentos:
Baixar para um caminho de arquivo
O exemplo a seguir baixa um blob para um caminho de arquivo local. Se o diretório especificado não existir, o código lançará um DirectoryNotFoundException. Se o arquivo já existir no localFilePath
, ele será substituído por padrão durante os downloads subsequentes.
public static async Task DownloadBlobToFileAsync(
BlobClient blobClient,
string localFilePath)
{
await blobClient.DownloadToAsync(localFilePath);
}
Transferir para um fluxo
O exemplo a seguir baixa um blob criando um objeto Stream e, em seguida, baixa para esse fluxo. Se o diretório especificado não existir, o código lançará um DirectoryNotFoundException.
public static async Task DownloadBlobToStreamAsync(
BlobClient blobClient,
string localFilePath)
{
FileStream fileStream = File.OpenWrite(localFilePath);
await blobClient.DownloadToAsync(fileStream);
fileStream.Close();
}
Download para uma cadeia de caracteres
O exemplo a seguir pressupõe que o blob é um arquivo de texto e baixa o blob para uma cadeia de caracteres:
public static async Task DownloadBlobToStringAsync(BlobClient blobClient)
{
BlobDownloadResult downloadResult = await blobClient.DownloadContentAsync();
string blobContents = downloadResult.Content.ToString();
}
Download de um fluxo
O exemplo a seguir baixa um blob lendo de um fluxo:
public static async Task DownloadBlobFromStreamAsync(
BlobClient blobClient,
string localFilePath)
{
using (var stream = await blobClient.OpenReadAsync())
{
FileStream fileStream = File.OpenWrite(localFilePath);
await stream.CopyToAsync(fileStream);
}
}
Baixar um blob de bloco com opções de configuração
Você pode definir opções de configuração da biblioteca do cliente ao baixar um blob. Essas opções podem ser ajustadas para melhorar o desempenho e aumentar a confiabilidade. Os exemplos de código a seguir mostram como usar BlobDownloadToOptions para definir opções de configuração ao chamar um método de download. Observe que as mesmas opções estão disponíveis para BlobDownloadOptions.
Especificar opções de transferência de dados durante o download
Você pode configurar os valores em StorageTransferOptions para melhorar o desempenho das operações de transferência de dados. O exemplo de código a seguir mostra como definir valores para StorageTransferOptions
e incluir as opções como parte de uma BlobDownloadToOptions
instância. Os valores fornecidos neste exemplo não pretendem ser uma recomendação. Para ajustar corretamente esses valores, você precisa considerar as necessidades específicas do seu aplicativo.
public static async Task DownloadBlobWithTransferOptionsAsync(
BlobClient blobClient,
string localFilePath)
{
FileStream fileStream = File.OpenWrite(localFilePath);
var transferOptions = new StorageTransferOptions
{
// Set the maximum number of parallel transfer workers
MaximumConcurrency = 2,
// Set the initial transfer length to 8 MiB
InitialTransferSize = 8 * 1024 * 1024,
// Set the maximum length of a transfer to 4 MiB
MaximumTransferSize = 4 * 1024 * 1024
};
BlobDownloadToOptions downloadOptions = new BlobDownloadToOptions()
{
TransferOptions = transferOptions
};
await blobClient.DownloadToAsync(fileStream, downloadOptions);
fileStream.Close();
}
Para saber mais sobre como ajustar as opções de transferência de dados, consulte Ajuste de desempenho para uploads e downloads.
Especificar opções de validação de transferência ao fazer o download
Você pode especificar opções de validação de transferência para ajudar a garantir que os dados sejam baixados corretamente e não tenham sido adulterados durante o trânsito. As opções de validação de transferência podem ser definidas no nível do cliente usando BlobClientOptions, que aplica opções de validação a todos os métodos chamados a partir de uma instância BlobClient .
Você também pode substituir as opções de validação de transferência no nível do método usando BlobDownloadToOptions. O exemplo de código a seguir mostra como criar um BlobDownloadToOptions
objeto e especificar um algoritmo para gerar uma soma de verificação. A soma de verificação é então usada pelo serviço para verificar a integridade dos dados do conteúdo baixado.
public static async Task DownloadBlobWithChecksumAsync(
BlobClient blobClient,
string localFilePath)
{
FileStream fileStream = File.OpenWrite(localFilePath);
var validationOptions = new DownloadTransferValidationOptions
{
AutoValidateChecksum = true,
ChecksumAlgorithm = StorageChecksumAlgorithm.Auto
};
BlobDownloadToOptions downloadOptions = new BlobDownloadToOptions()
{
TransferValidation = validationOptions
};
await blobClient.DownloadToAsync(fileStream, downloadOptions);
fileStream.Close();
}
A tabela a seguir mostra as opções disponíveis para o algoritmo de soma de verificação, conforme definido por StorageChecksumAlgorithm:
Nome | valor | Description |
---|---|---|
Automático | 0 | Recomendado. Permite que a biblioteca escolha um algoritmo. Diferentes versões de bibliotecas podem escolher algoritmos diferentes. |
Nenhuma | 1 | Nenhum algoritmo selecionado. Não calcule nem solicite somas de verificação. |
MD5 | 2 | Algoritmo de hash MD5 padrão. |
ArmazenamentoCrc64 | 3 | CRC personalizado de 64 bits do Armazenamento do Azure. |
Recursos
Para saber mais sobre como baixar blobs usando a biblioteca de cliente do Armazenamento de Blobs do Azure para .NET, consulte os recursos a seguir.
Amostras de código
Operações da API REST
O SDK do Azure para .NET 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 .NET familiares. Os métodos da biblioteca de cliente para baixar blobs usam a seguinte operação da API REST:
- Obter Blob (API REST)
Recursos da biblioteca do cliente
Consulte também
Conteúdos relacionados
- Este artigo faz parte do guia do desenvolvedor do Armazenamento de Blobs para .NET. Para saber mais, consulte a lista completa de artigos do guia do desenvolvedor em Crie seu aplicativo .NET.