Upload de arquivos com .NET Core e Azure Storage

E aí galera, tudo certo?

Hoje vou falar um pouco sobre Azure Storage, que nada mais é que um serviço que armazena dados na nuvem. Mais especificamente, vou falar sobre armazenamento de blobs(binary large objects), também chamado de armazenamento de objeto. Onde podemos armazenar textos ou qualquer tipo de dado binário, como um instalador ou um documento, por exemplo.

Um pouco mais sobre o armazenamento de Blob

Como dito anteriormente, esse cara serve pra armazenar dados na nuvem, que podem ser acessados posteriormente via HTTP ou HTTPS de onde você estiver; algumas das funções dele são: fornecer imagens/documentos diretamente para o navegador, streaming de áudio e vídeo, armazenar arquivos para acesso distribuído e armazenamento para backup.

Composição

O serviço do Blob consiste basicamente em três partes:

09

  • Conta de armazenamento: O acesso aos dados armazenados é dado pela conta de armazenamento.
  • Contêiners: Um contêiner é um agrupamento de Blobs, podemos compará-los à pastas. Uma conta de armazenamento pode ter vários contêiners.
  • Blobs: Blobs são os arquivos propriamente ditos. Um contêiner pode ter vários blobs, que por sua vez podem ter três tipos: blobs de página, blobs de arquivo e blobs de anexo. Você pode ver mais sobre os blobs aqui.

Para acessar o blob “Doc1.pdf” via HTTP, fazemos a seguinte url:
suaconta.core.windows.net/documentos/Doc1.pdf

Implementação

Certo, com isso esclarecido, agora vamos colocar a mão na massa! A primeira coisa que precisamos fazer é criar a nossa conta de armazenamento. Lá no portal, escolha a opção “Dados + Armazenamento” e logo após, “Conta de Armazenamento”, veja:
01

Entre com o nome, escolha os recursos e em seguida clique em “Criar”:
02

Com a conta de armazenamento criada, agora vamos pegar os dados da string de conexão, lá em “Todas as configurações” e em seguida “Chaves de acesso”:
03

Feito isso, vamos ver as nossas chaves de acesso. Para este exemplo, vamos usar a “Chave 1” que fica dentro das “Cadeias de caracteres de conexão”:
04

Com o ambiente na nuvem preparado, e com a chave em mãos, vamos à aplicação, fiz uma aplicação .NET Core MVC, a mais simples possível.

Temos apenas que instalar o pacote NuGet para trabalharmos com o armazenamento do azure:

PM> Install-Package WindowsAzure.Storage -Pre

Na Index, tenho o seguinte HTML:

Um form simples, tenho um input chamado “arquivo”, que é o cara que vai receber o nosso arquivo, a página ficou um tanto quanto feia, mas é essa aqui:
05

No início do meu Controller “Upload”, tenho o seguinte código, para instanciar o serviço, a chave de acesso está no “appsettings.json”, e estou utilizando a interface “IConfigurationRoot para acessá-la:

Quando o botão “Upload” for acionado, vamos para uma Action chamada “Upload” do Controller “Upload”… bem criativo, mas enfim, o método é esse, é só receber um “IFormFile” chamado “arquivo”(mesmo nome do input) como parâmetro da Action que o ModelBinder se vira pro seu arquivo chegar lá:

E é esse código acima que faz toda a “mágica”, e se entrarmos na conta de armazenamento, o arquivo está lá:
07

Na outra Action que se chama “VerArquivos”, vamos ver os arquivos que estão no contêiner em questão:

Onde podemos ver o arquivo que acabamos de subir para a nuvem:
06

Também posso ver o arquivo em meu navegador, acessando esse caminho acima:

08

E finalmente, também podemos excluir o arquivo:

Enfim, o processo é bastante simples, você garante que seus dados não serão perdidos, pois o próprio Azure faz a replicação dos seus dados para pelo menos 3 nós diferentes 😀
Para saber mais sobre os tipos de replicação e redundância é só acessar aqui.

Os exemplos de código estão disponíveis no GitHub: https://github.com/vmussak/AzureStorageExample

Por hoje é só, qualquer dúvida ou sugestão, estou à disposição! Até mais 😀

 

 

Anúncios

Deixe uma Resposta

Preencha os seus detalhes abaixo ou clique num ícone para iniciar sessão:

Logótipo da WordPress.com

Está a comentar usando a sua conta WordPress.com Terminar Sessão / Alterar )

Imagem do Twitter

Está a comentar usando a sua conta Twitter Terminar Sessão / Alterar )

Facebook photo

Está a comentar usando a sua conta Facebook Terminar Sessão / Alterar )

Google+ photo

Está a comentar usando a sua conta Google+ Terminar Sessão / Alterar )

Connecting to %s