使用 Azure Blob Stoage 實現一個靜態檔案伺服器

Agile.Zhou發表於2020-07-27

什麼是Azure Blob Stoage

Azure Blob Stoage 是微軟Azure的物件儲存服務。國內的雲一般叫OSS,是一種用來儲存非結構化資料的服務,比如音訊,視訊,圖片,文字等等。使用者可以通過http在全球任意地方訪問這些資源。這些資源可以公開訪問,也可以私有訪問。看到這些描述立馬就想到這這個服務可以用來做靜態檔案服務。
Uv3x3T.png
如果你有免費賬戶那麼可以使用5G的免費額度,用來存一些圖片跟JavaScript等小檔案也足夠了。
UxefG4.png
Azure Blob Stoage的儲存結構。

建立儲存賬戶

UvmRDx.png

建立賬戶跟其他服務類似,取個例項的名稱,選區域,還是那個套路哪個區域離你近就選哪個。
UvmsC4.png

設定網路,預設設定即可。
UvmcvR.png

高階設定,把“需要安全傳輸”禁用,為了測試方便我們不走https。
Uvm629.png

點選“建立”就開始部署例項,等待一會就可以完成了。
UvKTGF.png

UvKoPU.png
回到資源主介面開始新建容器,取個名字“static”,公共訪問級別選擇“Blob僅匿名訪問blob”。
UvK55T.png

點選新建的容器,可以檢視容器裡的資原始檔,可以上傳刪除檔案。
UvK4aV.png

每個上傳上去的檔案,都會對應一個url,通過這個url可以直接進行訪問。
UvMNJU.png
在瀏覽器裡訪問一下這張圖片,可以在瀏覽器裡顯示出來。
分析一下這個url:https://azblob123.blob.core.windows.net/static/1.jpg
https://azblob123.blob.core.windows.net代表帳戶例項地址
static代表容器
1.jpg代表檔案

自定義域名

到這我們的檔案可以上傳,可以訪問,已經做為靜態檔案伺服器使用了。但是這個域名不太友好,讓我們來給它換個自己的域名訪問。
UvKWbq.png
選擇左邊選單“自定義域”。介面上提示有兩種方式可以設定自定義域名,我們使用CNAME來實現以下。
UvKRrn.png
這裡使用dnspod來管理域名。
新增一條記錄:
主機記錄:files
記錄型別:cname
記錄值:azblob123.blob.core.windows.net
這有配置之後,訪問我自己的域名files.xbaby.xyz其實指向的是azblob123.blob.core.windows.net
UvMUWF.png
我們使用新域名訪問下 http://files.xbaby.xyz/static/1.jpg 瀏覽器裡出現了對應的圖片,表示我們的自定義域名起作用了。

使用SDK上傳檔案

顯然每次上傳檔案都要登入到Azure的管理平臺太麻煩了,我們可以使用Azure Blob提供的.net sdk來製作一個小工具來方便上傳檔案。

新建一個winform專案

新建一個winform專案,一個框放一個按鈕用來選擇檔案,選擇後進行上傳。
aScEOe.png

從nuget上安裝AzureBlobStorage的sdk

Install-Package Azure.Storage.Blobs -Version 12.4.4

使用sdk上傳檔案需要一個連線串
UvKhV0.png
實現上傳程式碼:

        private void btnSelectfiles_Click(object sender, EventArgs e)
        {
            if (openFileDialog1.ShowDialog() == DialogResult.OK)
            {
                var path = openFileDialog1.FileName;
                var fileName = path.Split("\\").Last();
                string connectionString = "xxxxxxxxxxxx";
                var container = new BlobContainerClient(connectionString, "static");
                using (var file = File.OpenRead(path))
                {
                    container.UploadBlob(fileName, file);

                    MessageBox.Show($"{fileName}上傳成功!");
                }
            }
        }

使用工具選擇一張圖片稍等一會圖片就會上傳上去拉。
aSRlSx.png

總結

使用Azure Blob Storage可以方便的上傳跟管理各種圖片、文字、音視訊等檔案。上傳的每個檔案都有一個唯一的url對應,可以方便的通過http在全球訪問內進行訪問。使用這些特性我們可以輕鬆的把它當做靜態檔案伺服器來用。我們還可以通過定義域名跟自己的域名結合起來使用,獲得更加友好的使用體驗。Azure Blob Storage還提供了各種語言的sdk方便使用程式碼來管理資料。

關注我的公眾號一起玩轉技術

相關文章