[Windows Azure]檔案上傳至Blob

  • 3139
  • 0

摘要:[Windows Azure]檔案上傳至Blob

Blob(Binary Large Object),顧名思義為大型二進位物件,是微軟雲端Azure中提供的一種儲存服務,

專門用來存放如圖片、文件...等二進位資料。

Blob的階層概念很簡單,一個儲存帳戶(Storage Account)裡有許多Container,

而一個Container裡又可以有許多Blob個體,所以我都把Container想成是資料夾的概念。

 

簡單介紹過Blob後,就來介紹怎麼把檔案上傳至Blob,程式碼如下:

namespace WebRole1
{
    public partial class _Default : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {

        }

        protected void btnUpload_Click(object sender, EventArgs e)
        {
            if (FileUpload1.HasFile)
            {
                SaveToBlob(FileUpload1.FileName, FileUpload1.PostedFile.ContentType, FileUpload1.FileBytes);
            }
        }

        private void SaveToBlob(string fileName, string contentType, byte[] data)
        {
            var account = CloudStorageAccount.FromConfigurationSetting("Microsoft.WindowsAzure.Plugins.Diagnostics.ConnectionString");
            var client = account.CreateCloudBlobClient();

            var container = client.GetContainerReference("upload-files");
            container.CreateIfNotExist();

            var permissions = container.GetPermissions();
            permissions.PublicAccess = BlobContainerPublicAccessType.Container;
            container.SetPermissions(permissions);

            var blob = container.GetBlobReference(fileName);
            blob.Properties.ContentType = contentType;
            blob.UploadByteArray(data);
        }
    }
}

重點只有在SaveToBlob()這個方法,流程大概為

1.先取得儲存帳戶,建立Blob Client。

2.用Blob Client建立一個名為"upload-files"的Container。

3.設定Container的存取權限。

4.該Container建立一Blob,並填入名稱、ContentType、內容等資料。

以上大致為建立一個Blob的標準流程。

 

微軟的東西真的很方便,你可以在Visual Studio裡的Server Explorer瀏覽Windows Azure Storage,

像我剛剛建立的Container就如下圖:

點兩下就可以瀏覽該Container裡所有的Blob物件

結論,Blob真的很方便又好用。