如 Windows Azure Storage BLOB 概述中所提到的,Windows Azure Storage Blobs 沒有子資料夾的概念,所謂子資料夾就是檔案名稱的一部分。例如
http://myaccount.blob.core.windows.net/pictures/trips/seattle/spaceneedle.jpg
乍看之下您或許會以為有多個樹狀層級的資料夾 "pictures"、"trips" 與 "seattle" 會對應到此 blob 的命名空間,但實際上所有路徑中許多成員僅是二進制檔案自己的名稱而已。在這個例子中,容器的名稱 (container) 為"pictures",所儲存的二進制檔案名稱則是 "trips/seattle/spaceneedle.jpg"。
附上一個 Console Mode Application 範例程式碼,把一個本機硬碟內的圖片 IMG_2956.JPG 上傳到 Windows Azure Storage 一個名為 Image 的容器 (Container) ,而這個 BLOB 檔案名稱為 subfolder1\subfolder1a\IMG_2956.JPG
usingSystem;
usingSystem.Collections.Generic;
usingSystem.Linq;
usingSystem.Text;
// Add some namespace
usingSystem.Configuration;
usingMicrosoft.WindowsAzure.Storage;
usingMicrosoft.WindowsAzure.Storage.Auth;
usingMicrosoft.WindowsAzure.Storage.Blob;
namespaceBLOBSample
{
class Program
{
staticvoidMain(string[] args)
{
// Retrieve storage account from connection string.
CloudStorageAccount storageAccount= CloudStorageAccount.Parse("DefaultEndpointsProtocol=https;AccountName=[Your account name];AccountKey=[Your Key]");
// Create the blob client.
CloudBlobClient blobClient=storageAccount.CreateCloudBlobClient();
// Retrieve reference to a previously created container.
CloudBlobContainer container=blobClient.GetContainerReference("image");
// Retrieve reference to a blob named " subfolder1\\subfolder1a\\IMG_2956.JPG ".
CloudBlockBlob blockBlob=container.GetBlockBlobReference("subfolder1\\subfolder1a\\IMG_2956.JPG");
// Create or overwrite the " subfolder1\\subfolder1a\\IMG_2956.JPG " blob with contents from a local file IMG_2956.JPG.
using (varfileStream=System.IO.File.OpenRead(@"IMG_2956.JPG"))
{
blockBlob.UploadFromStream(fileStream);
}
System.Console.WriteLine("Complete!");
System.Console.ReadKey();
}
}
}
若是用 CloudXplorer這類工具,為了將 Azure Storage Blobs 模擬的像檔案總管,讓使用者看起像是有兩層子資料夾 subfolder1 與 subfolder1a,但是請記得實際上這是 image 的容器 (Container) 內儲存了一個檔案名稱為 subfolder1\subfolder1a\IMG_2956.JPG 的二進制檔案。