这是一个非常直接的问题。
我有一个Content-Type
以字符串形式存储的。
理想情况下,我想从中推断出一个扩展,Content-Type
而不必有一个巨大的讨厌的开关盒。
是否有内置结构来实现这一目标?
顺便说一句,我发现了这个问题,但从扩展到内容类型的方向相反。
这是一个非常直接的问题。
我有一个Content-Type
以字符串形式存储的。
理想情况下,我想从中推断出一个扩展,Content-Type
而不必有一个巨大的讨厌的开关盒。
是否有内置结构来实现这一目标?
顺便说一句,我发现了这个问题,但从扩展到内容类型的方向相反。
你会想要一个Dictionary
. 这将允许您查找给定内容类型的扩展:
Dictionary<string, string> extensionLookup = new Dictionary<string, string>()
{
{"ContentType1", ".ext1"},
{"ContentType2", ".ext2"},
};
您可以根据数据库表、文件等填充字典,而不是对值进行硬编码。
一旦你有了Dictionary
它,它就像这样简单:
string extension = extensionLookup[someContentType];
在我的 W10 盒子的注册表中,有一个广泛的列表,将内容类型映射到.extn
:
[HKEY_CLASSES_ROOT\MIME\Database\Content Type]
您可能想探索HtmlAgilityPack OSS 项目,该项目的源文件HtmlWeb.cs
包含以下方法:
public static string GetContentTypeForExtension(string extension, string def)
public static string GetExtensionForContentType(string contentType, string def)
还有[注释掉]字典和人口代码:
//private static Dictionary<string, string> _mimeTypes;
// _mimeTypes = new Dictionary<string, string>();
// _mimeTypes.Add(".3dm", "x-world/x-3dmf");
// _mimeTypes.Add(".3dmf", "x-world/x-3dmf");
// ...
// _mimeTypes.Add(".zoo", "application/octet-stream");
// _mimeTypes.Add(".zsh", "text/x-script.zsh");
因此,您可以自己酿造(也许只是您的应用程序需要的常见的)以提高效率。
仅供参考,内容类型值和用法的权威列表在这里: www.iana.org/assignments/media-types/media-types.xhtml