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