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!
