使用Azure Blob Storage实现一个静态文件服务器
什么是Azure Blob?Storage
Azure Blob Storage是微軟Azure的對(duì)象存儲(chǔ)服務(wù)。國(guó)內(nèi)的云一般叫OSS,是一種用來(lái)存儲(chǔ)非結(jié)構(gòu)化數(shù)據(jù)的服務(wù),比如音頻,視頻,圖片,文本等等。用戶(hù)可以通過(guò)http在全球任意地方訪問(wèn)這些資源。這些資源可以公開(kāi)訪問(wèn),也可以私有訪問(wèn)??吹竭@些描述立馬就想到這這個(gè)服務(wù)可以用來(lái)做靜態(tài)文件服務(wù)。
如果你有免費(fèi)賬戶(hù)那么可以使用5G的免費(fèi)額度,用來(lái)存一些圖片跟JavaScript等小文件也足夠了。
Azure Blob Stoage的存儲(chǔ)結(jié)構(gòu)。
創(chuàng)建存儲(chǔ)賬戶(hù)
創(chuàng)建賬戶(hù)跟其他服務(wù)類(lèi)似,取個(gè)實(shí)例的名稱(chēng),選區(qū)域,還是那個(gè)套路哪個(gè)區(qū)域離你近就選哪個(gè)。
設(shè)置網(wǎng)絡(luò),默認(rèn)設(shè)置即可。
高級(jí)設(shè)置,把“需要安全傳輸”禁用,為了測(cè)試方便咱不走h(yuǎn)ttps。
點(diǎn)擊“創(chuàng)建”就開(kāi)始部署實(shí)例,等待一會(huì)就可以完成了。
回到Azure Blob資源主界面開(kāi)始新建容器,取個(gè)名字“static”,公共訪問(wèn)級(jí)別選擇“Blob僅匿名訪問(wèn)blob”。
點(diǎn)擊新建的容器,可以查看容器里的資源文件,可以上傳刪除文件。
每個(gè)上傳上去的文件,都會(huì)對(duì)應(yīng)一個(gè)url,通過(guò)這個(gè)url可以直接進(jìn)行訪問(wèn)。
在瀏覽器里訪問(wèn)一下這張圖片,可以在瀏覽器里顯示出來(lái)。
分析一下這個(gè)url:
https://azblob123.blob.core.windows.net/static/1.jpg
https://azblob123.blob.core.windows.net 代表帳戶(hù)實(shí)例地址
static 代表容器
1.jpg 代表文件
自定義域名
到這我們的文件可以上傳,可以訪問(wèn),已經(jīng)做為靜態(tài)文件服務(wù)器使用了。但是這個(gè)域名不太友好,讓我們來(lái)給它換個(gè)自己的域名訪問(wèn)。
選擇左邊菜單“自定義域”。
界面上提示有兩種方式可以設(shè)置自定義域名,我們使用CNAME來(lái)實(shí)現(xiàn)一下。
這里使用dnspod來(lái)管理域名。
添加一條記錄:
主機(jī)記錄:
files
記錄類(lèi)型:
cname
記錄值:
azblob123.blob.core.windows.net
這有配置之后,訪問(wèn)我自己的域名files.xbaby.xyz其實(shí)指向的是azblob123.blob.core.windows.net
我們使用新域名訪問(wèn)下 http://files.xbaby.xyz/static/1.jpg 瀏覽器里出現(xiàn)了對(duì)應(yīng)的圖片,表示我們的自定義域名起作用了。
使用SDK上傳文件
顯然每次上傳文件都要登錄到Azure的管理平臺(tái)太麻煩了,我們可以使用Azure Blob提供的.net sdk來(lái)制作一個(gè)小工具來(lái)方便上傳文件。
新建一個(gè)winform項(xiàng)目
新建一個(gè)winform項(xiàng)目,一個(gè)框放一個(gè)按鈕用來(lái)選擇文件,選擇后進(jìn)行上傳。
從nuget上安裝AzureBlobStorage的sdk
Install-Package Azure.Storage.Blobs -Version 12.4.4使用sdk上傳文件需要一個(gè)連接串
實(shí)現(xiàn)上傳代碼:
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}上傳成功!");}}}使用工具選擇一張圖片稍等一會(huì)圖片就會(huì)上傳上去啦。
總結(jié)
使用Azure Blob Storage可以方便的上傳跟管理各種圖片、文本、音視頻等文件。上傳的每個(gè)文件都有一個(gè)唯一的url對(duì)應(yīng),可以方便的通過(guò)http在全球訪問(wèn)內(nèi)進(jìn)行訪問(wèn)。使用這些特性我們可以輕松的把它當(dāng)做靜態(tài)文件服務(wù)器來(lái)用。我們還可以通過(guò)定義域名跟自己的域名結(jié)合起來(lái)使用,獲得更加友好的使用體驗(yàn)。Azure Blob Storage還提供了各種語(yǔ)言的sdk方便使用代碼來(lái)管理數(shù)據(jù)。
關(guān)注我的公眾號(hào)一起玩轉(zhuǎn)技術(shù)
總結(jié)
以上是生活随笔為你收集整理的使用Azure Blob Storage实现一个静态文件服务器的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: .NET Core + K8S + Lo
- 下一篇: 台湾RD技术谈|嘉宾郭家齊董大偉黃保翕