1

同じファイル拡張子に対して非常に多くの MIME タイプがあるのはなぜですか? たとえば、この拡張子に複数の MIME タイプが関連付けられている場合、拡張子のみに基づいてファイルの MIME タイプを決定するにはどうすればよいでしょうか?

Example:
.mp3    audio/mpeg3
.mp3    audio/x-mpeg-3
.mp3    video/mpeg
.mp3    video/x-mpeg

デフォルトの MIME タイプを知るにはどうすればよいですか? は何x-を意味しますか? これは MIME タイプの linux/unix フレーバーですか? そして、これらのどれも(まだ)標準化されていないのはなぜですか?

出典: Sitepointただし、同様のスパゲッティを生産する他のリストが複数あります。

編集:

IIS 以外のソース ディレクトリにあるいくつかのファイルへのリンクを ASP.NET ページで提供する必要があります。Windows サーバーで。ファイルが何であるかはわかりませんが、セキュリティ上の問題になる可能性があるため、ファイルへのフルパスを提供できないことは知っています.

私はこれに似たコードを使用しています:

Response.ContentType = "image/jpeg";
Response.AppendHeader("Content-Disposition","attachment; filename=SailBig.jpg");
Response.TransmitFile( '[path to file]' );
Response.End();

ContentType プロパティを実際のファイルの MIME タイプに置き換えます。

4

1 に答える 1

0

Framework 4.5 を使用している場合は、次を使用して mimemapping を取得できます。

var mapping = System.Web.MimeMapping.GetMimeMapping("something.jpg");

Framework 4 を使用している場合は、非パブリック メソッドにアクセスして、次のように同じことを行うことができます。

var assembly = Assembly.Load("System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a");
var assemblyType = assembly.GetType("System.Web.MimeMapping");

var getMimeMappingMethod = assemblyType.GetMethod("GetMimeMapping", BindingFlags.Static | BindingFlags.NonPublic) ??
                           assemblyType.GetMethod("GetMimeMapping", BindingFlags.Static | BindingFlags.Public);

var mapping = (string)getMimeMappingMethod.Invoke(null, new object[] { fileName });
于 2014-09-10T10:42:40.383 に答える