Azure Blob存儲(chǔ)
Azure Blob存儲(chǔ)是一種將非結(jié)構(gòu)化數(shù)據(jù)作為對(duì)象/Blob存儲(chǔ)在云中的服務(wù)。Blob存儲(chǔ)可以存儲(chǔ)任何類型的文本或二進(jìn)制數(shù)據(jù),例如文檔、媒體文件或應(yīng)用程序安裝程序。
理解互聯(lián)網(wǎng)媒體類型
互聯(lián)網(wǎng)媒體類型(Internet Media Type,也稱MIME類型或內(nèi)容類型)是給互聯(lián)網(wǎng)上傳輸?shù)膬?nèi)容賦予的一種兩段式的分類類型。一個(gè)文件的互聯(lián)網(wǎng)媒體類型與其后綴名相對(duì)應(yīng)?;ヂ?lián)網(wǎng)媒體類型的分類標(biāo)準(zhǔn)由IANA發(fā)布,最初在RFC 2045中被定義,當(dāng)時(shí)僅用于使用SMTP協(xié)議的電子郵件中?,F(xiàn)在在其他協(xié)議(如HTTP或SIP)中也常使用互聯(lián)網(wǎng)媒體類型。
一個(gè)互聯(lián)網(wǎng)媒體類型至少包含兩個(gè)部分:一個(gè)類型(Type)和一個(gè)子類型(Subtype)。此外,它還可以包括一個(gè)或多個(gè)可選參數(shù)。比如,HTML文件的互聯(lián)網(wǎng)媒體類型可能是text/html;charset=UTF-8
在該例中,文件類型為text,子類型為html,而charset是一個(gè)可選參數(shù),其值為UTF-8。
為何要關(guān)注互聯(lián)網(wǎng)媒體類型
瀏覽器通過互聯(lián)網(wǎng)媒體類型這個(gè)參數(shù)決定對(duì)某些文件的處理方式,比如下載application/octet-stream類型的文件,調(diào)用播放器打開video/mpeg類型的文件等。錯(cuò)誤的互聯(lián)網(wǎng)媒體類型可能會(huì)使瀏覽器錯(cuò)誤地處理文件,例如下載本應(yīng)該直接打開的視頻文件,或報(bào)出“Error:Unsupported video type or invalid file path”等錯(cuò)誤。
Azure Blob存儲(chǔ)中的互聯(lián)網(wǎng)媒體類型的實(shí)現(xiàn)
Azure Blob存儲(chǔ)支持大部分常見的互聯(lián)網(wǎng)媒體類型,并將媒體類型配置在文件的內(nèi)容類型(content type)字段里。當(dāng)一個(gè)文件被上傳至Azure Blob存儲(chǔ)時(shí),如果沒有特別設(shè)置內(nèi)容類型,Azure存儲(chǔ)默認(rèn)會(huì)給該文件賦予application/octet-stream二進(jìn)制文件的內(nèi)容類型。
如何在上傳時(shí)自動(dòng)設(shè)置正確的內(nèi)容類型
目前,通過Azure存儲(chǔ)傳輸工具AzCopy或管理工具Azure Storage Explorer(Windows/Mac)上傳到Blob存儲(chǔ)的文件都會(huì)通過分析文件的后綴名,被自動(dòng)加上正確的內(nèi)容類型。如果需要通過客戶自定義代碼上傳文件,可以引用.Net Framework 4.5 BCL庫中的System.Web.MimeMapping類,或在代碼中加入MIME類型詞典進(jìn)行媒體類型的判斷(三方代碼,僅供參考)。
如何更改已上傳的文件內(nèi)容類型
可以安裝Azure Storage Explorer(Windows/Mac),登錄存儲(chǔ)賬號(hào),找到文件,使用右鍵菜單的屬性來更改內(nèi)容類型。
備注
Azure Storage Explorer在0.8.6及以上版本才有修改Blob及文件的屬性的功能。如發(fā)現(xiàn)無法修改Blob屬性,請(qǐng)升級(jí)至最新版。
對(duì)于一個(gè)Blob容器內(nèi)所有文件的批處理,可以參考PowerShell腳本How to batch change the content type of Microsoft Azure blob storage(PowerShell)。
改好文件的媒體類型后,瀏覽器仍然提示下載或報(bào)錯(cuò)
請(qǐng)清空瀏覽器的緩存,或更換未訪問過該文件的瀏覽器再試。