如何通过内容类型获取文件扩展名?
例如,我知道文件是"text/css",那么扩展名将为".css"。
private static string GetExtension(string contentType)
{
string ext = ".";
{ DETERMINATION CODE IN HERE }
return ext;
}
如何通过内容类型获取文件扩展名?
例如,我知道文件是"text/css",那么扩展名将为".css"。
private static string GetExtension(string contentType)
{
string ext = ".";
{ DETERMINATION CODE IN HERE }
return ext;
}
虽然 Bradley 的答案在运行 .NET Framework 的普通 Windows 机器上依然完美,但是 Registry
是 Windows 特有的,当将应用程序移植到非 Windows 环境时会失败。
幸运的是,这里有一个非常小的 NuGet 库,它基本上包含了一个官方 MIME 类型和相应扩展名的硬编码映射表,没有任何外部依赖项,在这里可以找到:https://github.com/samuelneff/MimeTypeMap。 它可以通过 NuGet 安装,如下所示:
MediaTypeMap。安装完包之后,调用它就很简单了:
MimeTypeMap.GetExtension("audio/wav")
您可以简单地按照您的示例操作:
private static string GetExtension(string contentType)
{
return MimeTypes.MimeTypeMap.GetExtension(contentType);
}
public static string? Extension(string mimeType)
{
var key = Registry.ClassesRoot.OpenSubKey(@"MIME\Database\Content Type\" + mimeType, false);
var value = key?.GetValue("Extension", null);
return value?.ToString();
}
RegistryKey.OpenSubKey(string, bool)
方法。using Microsoft.Win32;
- Troy Gizzi