3

在 .NET 资源文件中,可以插入各种类型的内容 - 从纯文本到图像,后者表示为 base64 编码的字节数组(至少在 resx 文件中看起来像)。

我的目的是能够列出应用程序中的资源并显示其他信息,例如内容 (MIME) 类型、大小(以字节为单位)等。我需要按内容类型对资源进行分组和排序/过滤。

我的问题是 - 是否可以检索资源项的正确 MIME 类型。例如,如果我在应用程序资源中存储了 JPG 图像,我希望其内容类型为image/jpeg. 如果我存储了 JSON 文本,我希望它的 MIME 类型为application/json.

是否可以通过 .NET 标准资源管理功能来做到这一点?

4

2 回答 2

1

好吧,我想它是肯定的,也不是。根据本文,可以使用专门准备的资源,因此:对于任何具有资源的给定文件,只有具有此类信息的文件才可以。我也找不到在 VS2010 的 resx 编辑器中显示类型和 mimetype 列的方法。然而,它在属性中显示文件类型,而不是 mimetype。

于 2012-08-23T09:47:30.387 回答
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 文件中唯一地描述资源项。

于 2012-08-28T10:05:38.517 回答