[Azure] 使用C#存取Azure上的Storage Blob

透過C#程式碼存取Azure上的Storage雖然是在網路上就很容易找到的資訊
但是本篇還是簡單說明如何建立Azure上的Storage,並將存取程式碼封裝成一個簡單的類別庫
提供開發者快速的使用

微軟官網上已經有很清楚的文章,說明如何透過程式的方式進行Storage的存取
How to use Blob storage from .NET​
如何搭配使用 Azure 檔案儲存體與 Windows

但是畢竟這篇文章比較適合已經熟悉Azure以及程式開發的人使用
所以我在這裡還是重頭說明一次好了,要透過程式碼存取Azure Storage的步驟,簡單來說有兩個
1.建立Azure Storage
2.建立存取用的程式碼

在Azure上建立Storage的方式很容易,登入Azure之後,點選[新增] => [資料+儲存體] => [儲存體] 建立儲存體的方式,有分為[傳統]以及[資源管理員],如果已經熟悉Azure上的操作,可以透過[資源管理員]的建立方式,以方便進行管理點選建立後,就會要求選擇要放在哪個資源群組下,以及選擇要使用哪一種費用的方案,建立的時候要小心,儲存體的名稱必須全部都是小寫,不能有大寫建立完成後,必須要先在儲存體中取的該儲存體的連接字串KEY1或是KEY2都可以,點選右方的複製後,把這個KEY先記下來
再來,必須到儲存體中建立一個容器,當然容器名稱也必須全部都是小寫,不能有大寫,存取類型我們就先選擇[Blob]基本上Azure的設定到這邊就算完成了,接下來我們可以把程式開起來,並在專案中,透過NuGet管理員,把WindowsAzure.Storage安裝起來
在微軟官方的文件中寫得很清楚,若是我們要將檔案上傳到容器中,可以透過下面的程式碼進行上傳的動作

// Retrieve storage account from connection string.
CloudStorageAccount storageAccount = CloudStorageAccount.Parse("[Storage的連接字串]");

// Create the blob client.
CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();

// Retrieve reference to a previously created container.
CloudBlobContainer container = blobClient.GetContainerReference("[容器名稱]");

// Retrieve reference to a blob named "[要上傳的檔名]".
CloudBlockBlob blockBlob = container.GetBlockBlobReference("[要上傳的檔名]");

// Create or overwrite the "[要上傳的檔名]" blob with contents from a local file.
using (var fileStream = System.IO.File.OpenRead(@"[本地端的檔案路徑]"))
{
    blockBlob.UploadFromStream(fileStream);
}

其實程式碼非常的簡單明瞭,至於刪除Blob的程式碼,也可以參考如下面的內容所示

// Retrieve storage account from connection string.
CloudStorageAccount storageAccount = CloudStorageAccount.Parse("[Storage的連接字串]");

// Create the blob client.
CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();

// Retrieve reference to a previously created container.
CloudBlobContainer container = blobClient.GetContainerReference("[容器名稱]");

// Retrieve reference to a blob named "[要刪除的檔案名稱]".
CloudBlockBlob blockBlob = container.GetBlockBlobReference("[要刪除的檔案名稱]");

// Delete the blob.
blockBlob.Delete();

基本上透過上面的兩段程式碼,Blob的存取已經沒有問題了
而一開始我們建立Blob的方式,是採用Blob模式,所以要取得檔案的方式,只要透過網址URL的方式就可以取得了
Blob網址的組合就更簡單了,組合的方式就是

[Storage的網址] + [容器名稱] + [檔案名稱]

所以舉例來說,以我自己建立的Storage來說,Blob檔案下載的網址就會是這樣

https://madukalabstorage.blob.core.windows.net/[容器名稱]/[檔案名稱]

這樣大家對於Azure上使用儲存體是不是感到很方便呢?
但是如果要從無中生有還是有點麻煩的一件事,所以我自己將這些指令包成了一個類別庫並放上了GitHub
有需要的人就請自己下載來使用吧,裡面也有包含了如何使用的簡單程式碼範例與操作,對於剛進入Azure Storage的使用者應該會方便很多

GitHub網址:https://github.com/madukapai/AzureUtility