1. 程式人生 > >使用 Azure Blob Stoage 實現一個靜態檔案伺服器

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

## 什麼是Azure Blob Stoage Azure Blob Stoage 是微軟Azure的物件儲存服務。國內的雲一般叫OSS,是一種用來儲存非結構化資料的服務,比如音訊,視訊,圖片,文字等等。使用者可以通過http在全球任意地方訪問這些資源。這些資源可以公開訪問,也可以私有訪問。看到這些描述立馬就想到這這個服務可以用來做靜態檔案服務。 ![Uv3x3T.png](https://s1.ax1x.com/2020/07/24/Uv3x3T.png) 如果你有免費賬戶那麼可以使用5G的免費額度,用來存一些圖片跟JavaScript等小檔案也足夠了。 ![UxefG4.png](https://s1.ax1x.com/2020/07/24/UxefG4.png) Azure Blob Stoage的儲存結構。 ## 建立儲存賬戶 ![UvmRDx.png](https://s1.ax1x.com/2020/07/24/UvmRDx.png) 建立賬戶跟其他服務類似,取個例項的名稱,選區域,還是那個套路哪個區域離你近就選哪個。 ![UvmsC4.png](https://s1.ax1x.com/2020/07/24/UvmsC4.png) 設定網路,預設設定即可。 ![UvmcvR.png](https://s1.ax1x.com/2020/07/24/UvmcvR.png) 高階設定,把“需要安全傳輸”禁用,為了測試方便咱不走https。 ![Uvm629.png](https://s1.ax1x.com/2020/07/24/Uvm629.png) 點選“建立”就開始部署例項,等待一會就可以完成了。 ![UvKTGF.png](https://s1.ax1x.com/2020/07/24/UvKTGF.png) ![UvKoPU.png](https://s1.ax1x.com/2020/07/24/UvKoPU.png) 回到資源主介面開始新建容器,取個名字“static”,公共訪問級別選擇“Blob僅匿名訪問blob”。 ![UvK55T.png](https://s1.ax1x.com/2020/07/24/UvK55T.png) 點選新建的容器,可以檢視容器裡的資原始檔,可以上傳刪除檔案。 ![UvK4aV.png](https://s1.ax1x.com/2020/07/24/UvK4aV.png) 每個上傳上去的檔案,都會對應一個url,通過這個url可以直接進行訪問。 ![UvMNJU.png](https://s1.ax1x.com/2020/07/24/UvMNJU.png) 在瀏覽器裡訪問一下這張圖片,可以在瀏覽器裡顯示出來。 分析一下這個url:https://azblob123.blob.core.windows.net/static/1.jpg https://azblob123.blob.core.windows.net代表帳戶例項地址 static代表容器 1.jpg代表檔案 ## 自定義域名 到這我們的檔案可以上傳,可以訪問,已經做為靜態檔案伺服器使用了。但是這個域名不太友好,讓我們來給它換個自己的域名訪問。 ![UvKWbq.png](https://s1.ax1x.com/2020/07/24/UvKWbq.png) 選擇左邊選單“自定義域”。介面上提示有兩種方式可以設定自定義域名,我們使用CNAME來實現以下。 ![UvKRrn.png](https://s1.ax1x.com/2020/07/24/UvKRrn.png) 這裡使用dnspod來管理域名。 新增一條記錄: 主機記錄:files 記錄型別:cname 記錄值:azblob123.blob.core.windows.net 這有配置之後,訪問我自己的域名files.xbaby.xyz其實指向的是azblob123.blob.core.windows.net ![UvMUWF.png](https://s1.ax1x.com/2020/07/24/UvMUWF.png) 我們使用新域名訪問下 http://files.xbaby.xyz/static/1.jpg 瀏覽器裡出現了對應的圖片,表示我們的自定義域名起作用了。 ## 使用SDK上傳檔案 顯然每次上傳檔案都要登入到Azure的管理平臺太麻煩了,我們可以使用Azure Blob提供的.net sdk來製作一個小工具來方便上傳檔案。 ### 新建一個winform專案 新建一個winform專案,一個框放一個按鈕用來選擇檔案,選擇後進行上傳。 ![aScEOe.png](https://s1.ax1x.com/2020/07/25/aScEOe.png) 從nuget上安裝AzureBlobStorage的sdk ``` Install-Package Azure.Storage.Blobs -Version 12.4.4 ``` 使用sdk上傳檔案需要一個連線串 ![UvKhV0.png](https://s1.ax1x.com/2020/07/24/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](https://s1.ax1x.com/2020/07/25/aSRlSx.png) ## 總結 使用Azure Blob Storage可以方便的上傳跟管理各種圖片、文字、音視訊等檔案。上傳的每個檔案都有一個唯一的url對應,可以方便的通過http在全球訪問內進行訪問。使用這些特性我們可以輕鬆的把它當做靜態檔案伺服器來用。我們還可以通過定義域名跟自己的域名結合起來使用,獲得更加友好的使用體驗。Azure Blob Storage還提供了各種語言的sdk方便使用程式碼來管理資料。 關注我的公眾號一起玩轉技術 ![](https://s1.ax1x.com/2020/06/29/NfQ