Upload, download, e listagem de blobs com Azure Storage e .NET Core 2.0

0

Neste post rápido, irei mostrar como usar a biblioteca .NET do Armazenamento do Azure para carregar, baixar e listar blobs de bloco em um contêiner no Azure Storage.

Antes de mais nada, precisamos realizar um checklist! Você precisa ter em mãos o container de storage já criado e a chave de conexão encontrada na parte de Connections Strings dentro do portal do Azure.

Você precisará adicionar estas duas dependências no seu projeto:

  •  Microsoft.WindowsAzure.Storage;
  • Microsoft.WindowsAzure.Storage.Blob;

Você pode começar validando a conexão através deste trecho de código:

string storageConnectionString = "CONNEXÃO AQUI";

// Checando se a conexão pode realizar o parse
if (CloudStorageAccount.TryParse(storageConnectionString, out storageAccount))
{
    //Conexão válida.
}
else
{

  //Conexão não válida.
}

 

Após isto, você precisa criar um container, certo? Vamos lá!

//Crie o CloudBlobClient que representa o ponto de extremidade de armazenamento do Blob para a conta de armazenamento.
CloudBlobClient cloudBlobClient = storageAccount.CreateCloudBlobClient();

// Crie um contêiner chamado 'quickstartblobs' e anexe um valor de GUID a ele para tornar o nome exclusivo.
cloudBlobContainer = cloudBlobClient.GetContainerReference("quickstartblobs" + Guid.NewGuid().ToString());
await cloudBlobContainer.CreateAsync();

//Defina as permissões para que os blobs sejam públicos.
BlobContainerPermissions permissions = new BlobContainerPermissions
{
    PublicAccess = BlobContainerPublicAccessType.Blob
};
await cloudBlobContainer.SetPermissionsAsync(permissions);



 

Você também pode verificar se ele já existe antes de criar

   CloudBlobClient cloudBlobClient = storageAccount.CreateCloudBlobClient();
     var client = cloudBlobClient.GetContainerReference(blobname);
         if (await client.ExistsAsync())
           {
               //já existe, não criar
           }
           else
           {
               //não existe, criar.
           }

 

Com o container criado, vamos gerar um pequeno arquivo de teste e realizar o upload:

 
 // Crie um arquivo em sua pasta Meus Documentos local para fazer o upload para um blob.
string localPath = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
string localFileName = "QuickStart_" + Guid.NewGuid().ToString() + ".txt";
sourceFile = Path.Combine(localPath, localFileName);

// Escrevendo Hello World no arquivo.
File.WriteAllText(sourceFile, "Hello, World!");

Console.WriteLine("Temp file = {0}", sourceFile);
Console.WriteLine("Uploading to Blob storage as blob '{0}'", localFileName);

//Realizando upload do arquivo recém gerado.
CloudBlockBlob cloudBlockBlob = cloudBlobContainer.GetBlockBlobReference(localFileName);
await cloudBlockBlob.UploadFromFileAsync(sourceFile);

 

Você pode verificar os arquivos criados dentro do container assim:

 
 // Listagem e blob
BlobContinuationToken blobContinuationToken = null;
do
{
    var results = await cloudBlobContainer.ListBlobsSegmentedAsync(null, blobContinuationToken);
    blobContinuationToken = results.ContinuationToken;
    foreach (IListBlobItem item in results.Results)
    {
        Console.WriteLine(item.Uri);
    }
} while (blobContinuationToken != null); 

 

Você pode baixar o código fonte, aqui.

Um grande abraço!

 

 

 

Compartilhe.

Sobre o autor

Criador do blog Código Simples e com mais 9 anos de experiência em TI, com títulos de MVP Microsoft na área de Visual Studio Development, Neo4j Top 50 Certificate, Scrum Master e MongoDB Evangelist. Atuando em funções analista, desenvolvedor, arquiteto, líder técnico e gestor de equipes. Mais informações em : http://jhonathansoares.com