using Azure.Storage;
using Azure.Storage.Blobs;
using Azure.Storage.Blobs.Models;
using System;
using System.Threading.Tasks;
namespace BlobStorage
{
internal class Program
{
private const string blobServiceEndpoint = "https://mediastorrp.blob.core.windows.net/";
private const string storageAccountName = "mediastorrp";
private const string storageAccountKey = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";
public static async Task Main(string[] args)
{
StorageSharedKeyCredential accountCredentials = new
StorageSharedKeyCredential(storageAccountName, storageAccountKey);
BlobServiceClient serviceClient = new BlobServiceClient(new
Uri(blobServiceEndpoint), accountCredentials);
//1 get blob storage
account details
AccountInfo
info = await serviceClient.GetAccountInfoAsync();
await
Console.Out.WriteLineAsync($"Connected to Azure Storage Account");
await
Console.Out.WriteLineAsync($"Account name:\t{storageAccountName}");
await
Console.Out.WriteLineAsync($"Account kind:\t{info?.AccountKind}");
await
Console.Out.WriteLineAsync($"Account sku:\t{info?.SkuName}");
//2 Call iterate method
for all containers in the account
await
EnumerateContainersAsync(serviceClient);
//2 call method to
enumerate all blobs in a container
string existingContainerName =
"raster-graphics";
await
EnumerateBlobsAsync(serviceClient, existingContainerName);
// read blob
string newContainerName = "vector-graphics";
BlobContainerClient
containerClient = await GetContainerAsync(serviceClient, newContainerName);
string uploadedBlobName = "graph.svg";
BlobClient
blobClient = await GetBlobAsync(containerClient, uploadedBlobName);
await Console.Out.WriteLineAsync($"Blob Url:\t{blobClient.Uri}");
}
// Iterate all
containers in the account
private static async Task
EnumerateContainersAsync(BlobServiceClient client)
{
await foreach (BlobContainerItem
container in client.GetBlobContainersAsync())
{
await
Console.Out.WriteLineAsync($"Container:\t{container.Name}");
}
}
// Iterate all blobs in
the container
private static async Task
EnumerateBlobsAsync(BlobServiceClient client, string containerName)
{
BlobContainerClient container =
client.GetBlobContainerClient(containerName);
await Console.Out.WriteLineAsync($"Searching:\t{container.Name}");
await foreach (BlobItem blob in
container.GetBlobsAsync())
{
await
Console.Out.WriteLineAsync($"Existing Blob:\t{blob.Name}");
}
}
// get or create container
if not exists
private static async
Task<BlobContainerClient> GetContainerAsync(BlobServiceClient client, string containerName)
{
BlobContainerClient container =
client.GetBlobContainerClient(containerName);
await container.CreateIfNotExistsAsync(PublicAccessType.Blob);
await
Console.Out.WriteLineAsync($"New Container:\t{container.Name}");
return container;
}
private static async Task<BlobClient>
GetBlobAsync(BlobContainerClient client, string blobName)
{
BlobClient
blob = client.GetBlobClient(blobName);
await
Console.Out.WriteLineAsync($"Blob Found:\t{blob.Name}");
return blob;
}
}
}