繁体   English   中英

从Content-Type获取扩展

[英]Get extension from 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框的注册表中,有一个广泛的列表,将content-type映射到.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)

也有[commented-out]词典和人口代码:

//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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM