我已經閱讀了一些MIME類型檢索相關的問題。大部分情況都與使用物理文件有關。然而,在資源場景中,情況並非總是如此,因爲通過名稱獲取資源會返回幾乎任何東西的對象。此外,基於對象的二進制表示來確定MIME類型還有其他明顯的缺點:1)它不能保證類似類型的正確性(.docx
文件可能被錯誤地識別爲application/zip
)或導致性能下降,因爲它們需要處理對象字節。
因此,我認爲定義資源的人負責他們所代表的內容類型。因此,我決定根據作爲應用程序配置一部分的資源集名稱和資源名稱來定義MIME類型映射。這會導致在添加新資源時增加內容類型描述的額外工作,但很容易管理,而且不需要重新構建應用程序。
例如具有下列內容的定製配置部分可以做的工作:
<resourceContentTypeMapping>
<resourceSet name="CommonResources" defaultContentType="text/plain">
<!-- This would map enties in CommonResource.resx file -->
<item key="AppIcon" contentType="image/jpeg" />
</resourceSet>
<resourceSet name="SomeOtherResources" defaultContentType="text/plain">
...
</resourceSet>
...
</resourceContentTypeMapping>
的defaultContentType
屬性決定所有未映射的資源返回的內容類型。由於資源文件中的大多數項目都是字符串,因此我決定text/plain
將緩解我的工作,因爲我只需要描述非文本資源。分組到資源集中允許從單個resx文件中唯一地描述資源項目。
此外,似乎二進制數據存儲使用一個奇怪的啞劇類型(東西.../base64),而不是真正的內容之一。看來我必須提供描述資源內容類型的其他數據源。這是一個開銷,因爲隨着資源的變化,所以描述的數據源必須得到維護,我想避免這種情況。 –