Close Menu
Código Simples .NETCódigo Simples .NET
    Facebook X (Twitter) Instagram
    Trending
    • Reunião não existe só para trocar informação. É por isso que a IA ainda não conseguiu eliminá-la
    • Por que projetos ainda travam entre equipes, mesmo quando todos produzem mais rápido com IA
    • A IA reduziu o custo de produzir. Não reduziu o custo de alinhar
    • Noisy neighbor: por que multi-tenant não significa simplesmente compartilhar infraestrutura
    • Autoscaling pode ampliar o incidente: por que escalar uma camada não aumenta a capacidade do sistema inteiro
    • Observabilidade de IA com OpenTelemetry: o que realmente deveria aparecer no trace?
    • Rate limiting não é só proteção contra abuso. É contrato de capacidade
    • Feature flag não é interruptor. É dívida operacional com prazo de validade
    Facebook X (Twitter) Instagram
    Código Simples .NETCódigo Simples .NET
    Código Simples .NETCódigo Simples .NET
    Home»Asp.net»C#»Upload, download, e listagem de blobs com Azure Storage e .NET Core 2.0

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

    Jhonathan SoaresBy Jhonathan Soares11 de junho de 20181 Min Read C#
    Share
    Facebook Twitter LinkedIn WhatsApp Copy Link

    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!

     

     

     

    Share. Facebook Twitter LinkedIn Telegram WhatsApp Copy Link
    Jhonathan Soares
    • Website
    • Facebook
    • X (Twitter)
    • LinkedIn

    Criador do blog Código Simples e com mais 15 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.

    Posts Relacionados

    O que é a Ecma e qual é sua relação com C#?

    C# Post do Leitor 29 de julho de 20247 Mins Read

    UUID vs ULID: comparação e exemplos em C#

    C# 19 de junho de 20245 Mins Read

    Entendendo o ObjectId no MongoDB

    C# NoSql 25 de maio de 20246 Mins Read
    Newsletter

    Digite seu endereço de e-mail para receber notificações de novas publicações por e-mail.

    Junte-se a 24mil outros assinantes
    Posts recentes
    • Reunião não existe só para trocar informação. É por isso que a IA ainda não conseguiu eliminá-la
    • Por que projetos ainda travam entre equipes, mesmo quando todos produzem mais rápido com IA
    • A IA reduziu o custo de produzir. Não reduziu o custo de alinhar
    • Noisy neighbor: por que multi-tenant não significa simplesmente compartilhar infraestrutura
    • Autoscaling pode ampliar o incidente: por que escalar uma camada não aumenta a capacidade do sistema inteiro
    Categorias
    • Arquitetura (39)
      • Microsserviços (3)
      • Testes (4)
    • Asp.net (120)
      • C# (89)
      • Mvc (13)
    • Banco de dados (93)
      • NoSql (60)
      • Sql (38)
    • Boas práticas (40)
      • Gestão & Produtividade (9)
      • Metodologias Ágeis (6)
    • Cursos (53)
    • Dicas (108)
    • Front-End (92)
    • IA (11)
    • Linux (6)
    • NodeJS (4)
    • Post do Leitor (9)
    • Python (5)
    • Seo (12)
    • Tecnologia (30)
      • ITIL (1)
      • Padrões de Projeto (4)
    • Testes (2)

    VEJA TAMBÉM

    Cursos
    12 de fevereiro de 20166 Mins Read

    1000 livros gratuitos sobre programação!

    Olha que dica bacana! A pagina só com livros sobre programação é mantida no GitHub…

    Idempotência em Software: Conceitos, Importância e Aplicações

    Código Simples no Facebook
    Código Simples no Facebook
    • Popular
    • Recente

    1000 livros gratuitos sobre programação!

    12 de fevereiro de 2016

    Google lança versão “invisível” do reCAPTCHA!

    10 de março de 2017

    Mini curso de HTML5 oferecido pela Microsoft

    30 de janeiro de 2014

    O que significa ( !important ) na declaração do CSS ?

    5 de fevereiro de 2014

    Programa para supercompactar arquivos. KGB Archiver.

    6 de fevereiro de 2014

    Reunião não existe só para trocar informação. É por isso que a IA ainda não conseguiu eliminá-la

    12 de setembro de 2026

    Por que projetos ainda travam entre equipes, mesmo quando todos produzem mais rápido com IA

    11 de setembro de 2026

    A IA reduziu o custo de produzir. Não reduziu o custo de alinhar

    10 de setembro de 2026

    Noisy neighbor: por que multi-tenant não significa simplesmente compartilhar infraestrutura

    21 de agosto de 2026

    Autoscaling pode ampliar o incidente: por que escalar uma camada não aumenta a capacidade do sistema inteiro

    23 de julho de 2026
    Nosso Feed
    • RSS - Posts
    Fique por dentro

    Digite seu endereço de email para assinar este blog e receber notificações de novas publicações por email.

    Facebook X (Twitter) Instagram LinkedIn

    Type above and press Enter to search. Press Esc to cancel.

    Vá para versão mobile