C# 从内容类型获取扩展
这是一个非常直截了当的问题 我有一个C# 从内容类型获取扩展,c#,content-type,file-extension,C#,Content Type,File Extension,这是一个非常直截了当的问题 我有一个内容类型以字符串的形式存储 理想情况下,我希望从内容类型推断出一个扩展,而不必有一个巨大的讨厌的开关盒 是否有一个内置的结构来实现这一点 顺便说一句,我找到了这个,但从扩展到内容类型的方向正好相反。你需要一本字典。这将允许您查找给定内容类型的扩展: Dictionary<string, string> extensionLookup = new Dictionary<string, string>() { {"ContentTy
内容类型
以字符串的形式存储
理想情况下,我希望从内容类型
推断出一个扩展,而不必有一个巨大的讨厌的开关盒
是否有一个内置的结构来实现这一点
顺便说一句,我找到了这个,但从扩展到内容类型的方向正好相反。你需要一本
字典。这将允许您查找给定内容类型的扩展:
Dictionary<string, string> extensionLookup = new Dictionary<string, string>()
{
{"ContentType1", ".ext1"},
{"ContentType2", ".ext2"},
};
在“我的W10”框的注册表中,有一个将内容类型映射到.extn
的扩展列表:
[HKEY_CLASSES_ROOT\MIME\Database\Content Type]
您可能希望浏览包含以下方法的源文件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");
//私有静态字典\u mimeTypes;
//_mimeTypes=新字典();
//添加(“.3dm”、“x-world/x-3dmf”);
//添加(“.3dmf”,“x-world/x-3dmf”);
// ...
//添加(“.zoo”,“应用程序/八位字节流”);
//添加(“.zsh”,“text/x-script.zsh”);
因此,为了提高效率,您可以编写自己的(可能只是您的应用程序所需的常用软件)
仅供参考内容类型值和用法的权威列表如下:
这假设我提前知道所有可能的扩展。正如您所知,这几乎是不可能的,对吗?@MikeFielden没有这样的假设:“您可以根据数据库表、文件等填充字典,而不是硬编码值。”
您需要从某处获取映射,但是,您可以在运行时获取这些映射并将它们添加到字典中,而不必知道它们在编译时是什么。不,我理解您的意思,我只是希望在IIS中有类似Apache的Tika:)的东西。在.NET 4.5中,通过调用System.Web.MimeMapping.GetMimeMapping(字符串文件名),可以实现相反的效果。我希望有一种方法也能从IIS中为给定的内容类型获得适当的文件扩展名。不确定为什么会被否决,这个答案对我帮助很大。Upvoting可能重复的
//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");