C# Azure 存儲-Blob


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);
                    }
                }

 

7)刪除blobs

               CloudBlockBlob blockBlob = container.GetBlockBlobReference("23.jpg");

                //刪除blob
                blockBlob.Delete();


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM