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

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

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

我正在寻找ac#代码,以便在您了解内容类型时找到正确的文件扩展名,但不确定文件扩展名?

http://cyotek.com/article/display/mime-types-and-file-extensions有一个片段用于执行此操作,实质上在HKEY_CLASSES_ROOT\MIME\Database\Content Type\下查找注册表中的扩展名

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

  private static ConcurrentDictionary MimeTypeToExtension = new ConcurrentDictionary(); private static ConcurrentDictionary ExtensionToMimeType = new ConcurrentDictionary(); public static string ConvertMimeTypeToExtension(string mimeType) { if (string.IsNullOrWhiteSpace(mimeType)) throw new ArgumentNullException("mimeType"); string key = string.Format(@"MIME\Database\Content 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; } 

这个想法的起源来自: Snippet:Mime类型和文件扩展名