我已经阅读了许多有关 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 文件中唯一地描述资源项。