標籤:
1. 前言
本文是根據Azure文檔與本人做了驗證之後寫的。
如果想下載微軟官網的demo, 請前往github https://github.com/Azure-Samples/storage-blob-dotnet-getting-started
2. 介紹
Azure Blob是儲存很大空間的服務,能允許儲存與訪問通過http或https。Blob是有公有與私人的屬性。公有是所有人可以看到的連結,私人是要通過秘鑰等才可以訪問到資源。
blob可以儲存:
1)images或document指向一個檔案夾
2)儲存檔案
3)視頻與音頻
4)儲存資料的備份和恢複、災難恢複和歸檔
5)由一個本機存放區資料進行分析或azure託管服務
3. 概念
1)Container容器:
一個容器可以包含很多個blobs,一個帳號可以包含很多個containers容器。請注意容器名字要為小寫。
2)Blob:
blob是一個檔案的屬性與大小。Azure儲存的blobs包含三種類型:block blobs、page blobs、append blobs。
Block blobs:儲存的是text與二進位檔案,例如documents與媒體類型檔案。
Append blobs:是類似於Block blobs,但是它是做了最佳化的操作,所以它是用於logging的操作。一個簡單的block blob或者 append blob 可以包含5000個blocks,最大每個檔案4MB,整個大小最大為194GB(4MB*50000)
Page blobs:最大為1TB,是可以讀寫的操作。
4. 代碼開始
1)建立儲存賬戶
關於建立儲存的步驟,請參照
http://www.cnblogs.com/alunchen/p/5765700.html
中的第3大點
2)匯入包,在包管理器上面分別輸入下面的命令:
Install-Package WindowsAzure.Storage
Install-Package Microsoft.WindowsAzure.ConfigurationManager
2)建立串連
string connStr = "DefaultEndpointsProtocol=https;AccountName=ceslighttest;AccountKey=cp3JXYFXu6XhV18oVQW2q7urHOhxhm9Guwl6uElTBWd9nxxxxxxxxxxxxxx;EndpointSuffix=core.chinacloudapi.cn"; //建立串連 CloudStorageAccount storageAccount = CloudStorageAccount.Parse(connStr); CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();
3)建立容器
// 建立容器,是否存在 CloudBlobContainer container = blobClient.GetContainerReference("testuimageblobcontainercompanyname"); container.CreateIfNotExists();
4)設定許可權
容器預設是private的,意思是要指定key才能下載圖片。如果要把圖片設定成對外哪裡都可以下載,請設定成public
//容器預設是private的,意思是要指定key才能下載圖片。如果要把圖片設定成對外哪裡都可以下載,請設定成public container.SetPermissions(new BlobContainerPermissions { PublicAccess = BlobContainerPublicAccessType.Blob });
5)建立檔案,並上傳本地檔案
// 建立檔案名稱,如果有相同的檔案名稱,則替換 CloudBlockBlob blockBlob = container.GetBlockBlobReference("23.jpg"); //上傳本地檔案 using (var fileStream = System.IO.File.OpenRead(@"E:\23.jpg")) { blockBlob.UploadFromStream(fileStream); }
6)show全部在容器裡面的blobs檔案
// 輸出檔案大小與路徑uri foreach (IListBlobItem item in container.ListBlobs(null, false)) { if (item.GetType() == typeof(CloudBlockBlob)) { CloudBlockBlob blob = (CloudBlockBlob)item; r += string.Format("Block blob of length {0}: {1}", blob.Properties.Length, blob.Uri); } else if (item.GetType() == typeof(CloudPageBlob)) { CloudPageBlob pageBlob = (CloudPageBlob)item; r += string.Format("Page blob of length {0}: {1}", pageBlob.Properties.Length, pageBlob.Uri); } else if (item.GetType() == typeof(CloudBlobDirectory)) { CloudBlobDirectory directory = (CloudBlobDirectory)item; r += string.Format("Directory: {0}", directory.Uri); } }
C# Azure 儲存-Blob