カテゴリー
Microsoft

【.NET4.5】【ASP.NET】【MVC5】ファイル名から簡単に MIME タイプを得るには MimeMapping.GetMimeMapping メソッドを使う

経緯

ウェブブラウザからアップロードした任意のファイルをダウンロードできるようにしたいです。

このファイルは任意なため、MIME タイプ、content-type を事前に知ることができません

ファイルの拡張子から対応するコンテントタイプを引き出すことになりますけれども、対応するマップは作りたくありませんの><。

調べた結果

.NET4.5 から MimeMapping.GetMimeMapping メソッドが用意されていました!

使用例とポイント

  • CSV ファイルの場合、application/octet-stream となる。text/csv や text/comma-separated-values とならなかった。
  • パスは含めても含めなくてもファイル名から MIME タイプ文字列を返却してくれる。
string ct = MimeMapping.GetMimeMapping("Sample.pdf");
// 結果: application/pdf

string ct = MimeMapping.GetMimeMapping("Sample.xlsx");
// 結果: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet

string ct = MimeMapping.GetMimeMapping("Sample.csv");
// 結果: application/octet-stream
// ↑text/csv や text/comma-separated-values とならない!

string ct = MimeMapping.GetMimeMapping("Sample.jpg");
// 結果: image/jpeg

string ct = MimeMapping.GetMimeMapping("C:/Users/Sample.cs");
// 結果: application/octet-stream

string ct = MimeMapping.GetMimeMapping("C:/Users/Sample.zip");
// 結果: application/x-zip-compressed

調べた道筋

  1. 「.net4.5 mime」で検索
  2. Getting a MIME type from a file extension in ASP.NET 4.5 – .NET Web Development and Tools Blog – Site Home – MSDN Blogs
  3. MimeMapping.GetMimeMapping メソッド (String) (System.Web)
  4. 「MimeMapping.GetMimeMapping」で検索
  5. data URL スキームを作るヘルパー .NET 4.5 版 – しばやん雑記

おわりに

ちなみに、

  • MIME = Multipurpose Internet Mail Extension = 多目的インターネットメール拡張‎

であることから、content-type とは別物!?、HTML で MimeMapping.GetMimeMapping メソッドを使うのは使いどころを誤っている!? と思いました。

HTML では MIME を拡張して使用しているようですので、問題なさそうです。とても基本的なことでした♪

以上です。

コメントを残す