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!