0

私のMVC-3アプリケーションにはファイルアップロード機能があります。ファイルの内容と内容の種類はデータベースに保存されるため、ダウンロードを試みているときに正しいファイルを再暗号化できます。

ブラウザがFirefox13(13.0.1私が持っている)の場合、ファイルのコンテンツタイプがの代わりにdocx検出されることを除いて、すべてが正常に機能しています。text/plainapplication/vnd.openxmlformats-officedocument.wordprocessingml.document

IEで正常に動作することを確認しました。そして今、私はFirefox14.0.1にアップグレードされています。それもうまく機能しています。

HttpPostedFileBaseここで問題となるのは、ブラウザに依存しないコンテンツタイプをどのように判断できるかということです。

4

2 に答える 2

1

元の回答

私が理解しているように、MIMEタイプは最も信頼できるものではありません。

個人的には、ブラウザが提供するコンテンツタイプを完全に無視し、拡張機能に基づいたサーバーマップを使用しますFileName(正確ではありませんが、少なくともOS自体のエクスペリエンスと同様です)。

結局のところ、クライアントはコンテンツタイプとしてほとんど何でも送信できます(ブラウザと、場合によってはシステムによって異なります)。

拡張機能をコンテンツタイプにマッピングする

1つのオプション(質問の作成者が使用)は、次のエントリを使用することですHKEY_CLASSES_ROOT

var key = Registry.ClassesRoot.OpenSubKey(extension, false);
var value = key != null ? key.GetValue("Content Type", null) : null;
var mime = value != null ? value.ToString() : string.Empty;
于 2012-08-01T04:11:50.847 に答える
0

Web開発サーバーが問題である可能性があります。IISでソリューションをテストし、mimeタイプを構成に追加することを検討することをお勧めします。別の方法は、ファイル拡張子に基づいてMVCアプリケーションのHTTP応答ヘッダーをオーバーライドすることです。

于 2012-08-01T04:16:00.933 に答える