コンテンツタイプ別にファイル拡張子を取得するにはどうすればよいですか?
例ファイルが「text/css」であるため、拡張子は「.css」になります。
private static string GetExtension(string contentType)
{
string ext = ".";
{ DETERMINATION CODE IN HERE }
return ext;
}
私が知っている "最善の"解決策は、レジストリを照会することです。ここにサンプルコードがあります。 http://cyotek.com/blog/mime-types-and-file-extensions
public static string GetDefaultExtension(string mimeType)
{
string result;
RegistryKey key;
object value;
key = Registry.ClassesRoot.OpenSubKey(@"MIME\Database\Content Type\" + mimeType, false);
value = key != null ? key.GetValue("Extension", null) : null;
result = value != null ? value.ToString() : string.Empty;
return result;
}
.NET Frameworkを実行している通常の古いWindowsマシンではBradleyの答えは引き続き完璧ですが、Registry
はWindows固有であり、Windows以外の環境にアプリを移植すると失敗します。
幸いなことに、公式のMIMEタイプと対応する拡張機能のハードコードされたマップを基本的に含む非常に小さなNuGetライブラリがあり、外部依存関係はありませんここに https://github.com/samuelneff/MimeTypeMap 。 NuGetでは MediaTypeMap として利用できます。パッケージをインストールした後の呼び出しは次のように簡単です:
MimeTypeMap.GetExtension("audio/wav")
あなたの例にそれを入れるには、あなたは簡単にできます:
private static string GetExtension(string contentType)
{
return MimeTypes.MimeTypeMap.GetExtension(contentType);
}