.NET 應用程式可透過官方 SDK 輕鬆整合 Azure Blob Storage,實現非結構化資料(圖片、日誌、備份、大檔案)的雲端儲存與 CDN 加速分發。
Install-Package Azure.Storage.Blobs (最新 v12 SDK)WindowsAzure.Storage (v11,已進入維護模式)。using Azure.Storage.Blobs;
using Azure.Storage.Blobs.Models;
string connectionString = "DefaultEndpointsProtocol=https;AccountName=xxx;AccountKey=xxx;EndpointSuffix=core.windows.net";
string containerName = "my-container";
var blobServiceClient = new BlobServiceClient(connectionString);
var containerClient = blobServiceClient.GetBlobContainerClient(containerName);
await containerClient.CreateIfNotExistsAsync(PublicAccessType.Blob); // 公開讀取
// 上傳
var blobClient = containerClient.GetBlobClient("test.txt");
using (var stream = File.OpenRead(@"C:\test.txt")) {
await blobClient.UploadAsync(stream, overwrite: true);
}
// 下載
var downloadInfo = await blobClient.DownloadAsync();
using (var fileStream = File.OpenWrite(@"C:\downloaded.txt")) {
await downloadInfo.Value.Content.CopyToAsync(fileStream);
}
// 列舉
await foreach (var blobItem in containerClient.GetBlobsAsync()) {
Console.WriteLine(blobItem.Name);
}
// 產生 SAS 權杖(委派存取,無需帳號金鑰)
var sasBuilder = new BlobSasBuilder {
BlobContainerName = containerName,
BlobName = "test.txt",
Resource = "b",
ExpiresOn = DateTimeOffset.UtcNow.AddHours(1)
};
sasBuilder.SetPermissions(BlobSasPermissions.Read);
var sasToken = blobClient.GenerateSasUri(sasBuilder);
Console.WriteLine("SAS URL: " + sasToken);
微軟官方文檔含快速入門、最佳實務、效能調優、遷移指南:
https://learn.microsoft.com/zh-tw/azure/storage/blobs/storage-quickstart-blobs-dotnet
掌握 Azure Blob SDK 基本操作,即可為 .NET 應用增加無限擴展的雲端儲存能力。