Controller.File(Stream fileStream, String contentType, String fileDownloadName)メソッドを使用して、サーバーからファイルをダウンロードします。私の場合contentTypeはapplication/vnd.openxmlformats-officedocument.spreadsheetml.sheet. fileDownloadName引数でファイルに特別な名前を指定します。また、Firefox、Opera、IE9 でうまく動作します。
ただし、IE8 は、指定した名前ではなく、アクションの名前を返します。Download.xlsxURLがの場合、のように見えます../Report/Download。
それはなぜですか?
.NET の Content-Disposition ヘッダーによると、私が使用しているオーバーロードは問題を解決するはずです。ただし、IE8 では、ファイルのダウンロード名をエンコードする必要があります。一方、HttpUtility.UrlPathEncodeたとえばでエンコードすると、Firefox はエンコードされたファイル名を表示し始めます。
結局、普遍的な解決策はありますか?