Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/271.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从内容类型获取扩展_C#_Content Type_File Extension - Fatal编程技术网

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");