使用 Azure Blob Stoage 實現一個靜態檔案伺服器
阿新 • • 發佈:2020-07-27
## 什麼是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