使用 Azure Blob Stoage 實現一個靜態文件伺服器
什麼是Azure Blob Stoage
Azure Blob Stoage 是微軟Azure的對象存儲服務。中國的雲一般叫OSS,是一種用來存儲非結構化數據的服務,比如音頻,影片,圖片,文本等等。用戶可以通過http在全球任意地方訪問這些資源。這些資源可以公開訪問,也可以私有訪問。看到這些描述立馬就想到這這個服務可以用來做靜態文件服務。
如果你有免費賬戶那麼可以使用5G的免費額度,用來存一些圖片跟JavaScript等小文件也足夠了。
Azure Blob Stoage的存儲結構。
創建存儲賬戶
創建賬戶跟其他服務類似,取個實例的名稱,選區域,還是那個套路哪個區域離你近就選哪個。
設置網路,默認設置即可。
高級設置,把「需要安全傳輸」禁用,為了測試方便咱不走https。
點擊「創建」就開始部署實例,等待一會就可以完成了。
回到資源主介面開始新建容器,取個名字「static」,公共訪問級別選擇「Blob僅匿名訪問blob」。
點擊新建的容器,可以查看容器里的資源文件,可以上傳刪除文件。
每個上傳上去的文件,都會對應一個url,通過這個url可以直接進行訪問。
在瀏覽器里訪問一下這張圖片,可以在瀏覽器里顯示出來。
分析一下這個url://azblob123.blob.core.windows.net/static/1.jpg
//azblob123.blob.core.windows.net代表帳戶實例地址
static代表容器
1.jpg代表文件
自定義域名
到這我們的文件可以上傳,可以訪問,已經做為靜態文件伺服器使用了。但是這個域名不太友好,讓我們來給它換個自己的域名訪問。
選擇左邊菜單「自定義域」。介面上提示有兩種方式可以設置自定義域名,我們使用CNAME來實現以下。
這裡使用dnspod來管理域名。
添加一條記錄:
主機記錄:files
記錄類型:cname
記錄值:azblob123.blob.core.windows.net
這有配置之後,訪問我自己的域名files.xbaby.xyz其實指向的是azblob123.blob.core.windows.net
我們使用新域名訪問下 //files.xbaby.xyz/static/1.jpg 瀏覽器里出現了對應的圖片,表示我們的自定義域名起作用了。
使用SDK上傳文件
顯然每次上傳文件都要登錄到Azure的管理平台太麻煩了,我們可以使用Azure Blob提供的.net sdk來製作一個小工具來方便上傳文件。
新建一個winform項目
新建一個winform項目,一個框放一個按鈕用來選擇文件,選擇後進行上傳。
從nuget上安裝AzureBlobStorage的sdk
Install-Package Azure.Storage.Blobs -Version 12.4.4
使用sdk上傳文件需要一個連接串
實現上傳程式碼:
private void btnSelectfiles_Click(object sender, EventArgs e)
{
if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
var path = openFileDialog1.FileName;
var fileName = path.Split("\\").Last();
string connectionString = "DefaultEndpointsProtocol=https;AccountName=azblob123;AccountKey=GLtYbcXjy+KCOLUgIbdRoEPeWA+esNF/DWDNR7jABJuJrh46SuXfc7EOVS8yJXGXpZej3h/QFR9zzFrIAtuqrw==;EndpointSuffix=core.windows.net";
var container = new BlobContainerClient(connectionString, "static");
using (var file = File.OpenRead(path))
{
container.UploadBlob(fileName, file);
MessageBox.Show($"{fileName}上傳成功!");
}
}
}
使用工具選擇一張圖片稍等一會圖片就會上傳上去拉。
總結
使用Azure Blob Storage可以方便的上傳跟管理各種圖片、文本、音影片等文件。上傳的每個文件都有一個唯一的url對應,可以方便的通過http在全球訪問內進行訪問。使用這些特性我們可以輕鬆的把它當做靜態文件伺服器來用。我們還可以通過定義域名跟自己的域名結合起來使用,獲得更加友好的使用體驗。Azure Blob Storage還提供了各種語言的sdk方便使用程式碼來管理數據。
關注我的公眾號一起玩轉技術