当您知道内容类型时,如何获得正确的文件扩展名



我有一个包含文件数据的字节[]。数组可以包含几种不同文件类型的数据,如xml,jpg,html,csv等。

我需要将该文件保存在磁盘中。

我正在寻找一个 c# 代码,以便在您知道内容类型时找出正确的文件扩展名,但不确定文件扩展名?

http://cyotek.com/article/display/mime-types-and-file-extensions 有一个用于执行此操作的代码片段,本质上是在注册表中的HKEY_CLASSES_ROOTMIMEDatabaseContent Type<mime type>

也许这个转换器代码可以提供帮助:

        private static ConcurrentDictionary<string, string> MimeTypeToExtension = new ConcurrentDictionary<string, string>();
    private static ConcurrentDictionary<string, string> ExtensionToMimeType = new ConcurrentDictionary<string, string>();
    public static string ConvertMimeTypeToExtension(string mimeType)
    {
        if (string.IsNullOrWhiteSpace(mimeType))
            throw new ArgumentNullException("mimeType");
        string key = string.Format(@"MIMEDatabaseContent Type{0}", mimeType);
        string result;
        if (MimeTypeToExtension.TryGetValue(key, out result))
            return result;
        RegistryKey regKey;
        object value;
        regKey = Registry.ClassesRoot.OpenSubKey(key, false);
        value = regKey != null ? regKey.GetValue("Extension", null) : null;
        result = value != null ? value.ToString() : string.Empty;
        MimeTypeToExtension[key] = result;
        return result;
    }
    public static string ConvertExtensionToMimeType(string extension)
    {
        if (string.IsNullOrWhiteSpace(extension))
            throw new ArgumentNullException("extension");
        if (!extension.StartsWith("."))
            extension = "." + extension;
        string result;
        if (ExtensionToMimeType.TryGetValue(extension, out result))
            return result;
        RegistryKey regKey;
        object value;
        regKey = Registry.ClassesRoot.OpenSubKey(extension, false);
        value = regKey != null ? regKey.GetValue("Content Type", null) : null;
        result = value != null ? value.ToString() : string.Empty;
        ExtensionToMimeType[extension] = result;
        return result;
    }

这个想法的起源来自这里:代码段:MIME 类型和文件扩展名

相关内容

  • 没有找到相关文章

最新更新