2012-08-23 48 views
3

在.NET資源文件中,可以插入各種類型的內容 - 從純文本到圖像,後者被表示爲base64編碼的字節數組(至少它看起來像在resx文件中)。是否可以通過ResourceManager檢索.NET資源項目的實際內容類型(MIME類型)?

我的目的是能夠列出應用程序內的資源,並顯示額外的信息,如內容(MIME)類型,大小(以字節爲單位)等。我需要通過分組和排序/過濾資源內容類型。

我的問題是 - 是否有可能檢索資源項目的正確的MIME類型。例如,如果我在應用程序資源中存儲了JPG圖像,我希望其內容類型爲image/jpeg。如果我已經存儲了JSON文本,我希望其MIME類型爲application/json

是否可以通過.NET標準資源管理功能進行此操作?

回答

0

我已經閱讀了一些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文件中唯一地描述資源項目。

1

嗯,我想這是既是和不是。根據this article可能有專門準備的資源,所以:對於任何給定的具有資源的文件,只有具有這種信息的文件是否定的。我也找不到在VS2010中的resx編輯器中顯示類型和mimetype列的方法。它顯示了屬性中的文件類型,但不是mimetype。

+0

此外,似乎二進制數據存儲使用一個奇怪的啞劇類型(東西.../base64),而不是真正的內容之一。看來我必須提供描述資源內容類型的其他數據源。這是一個開銷,因爲隨着資源的變化,所以描述的數據源必須得到維護,我想避免這種情況。 –

相關問題