2011-09-12 21 views
6

ASP.NET MVC:Excelファイルをダウンロードする

return File(bindata, "application/octet-stream", "mytestfile.xls"); 
return File(bindata, "application/octet-stream", "mytestfile.xls"); 
上記のメソッドに対応するURLに手動でナビゲートすると、次のようなレンダリングされた表現が得られます。ファイル。ファイルは[名前を付けて保存]ダイアログボックスでダウンロードされません。

[名前を付けて保存]ダイアログでダウンロードを強制的に行う方法はありますか?

-pom-

+0

あなたが特定のブラウザでこれが起こる見ていますか?そして、なぜExcelファイルのMIMEタイプを使用していないのですか? –

+0

こんにちはCharlesさん、そうです、これはOperaでのみ起こります。今度はFFとSafariでテストしました。そこに保存ダイアログが表示されます。 – Pompair

答えて

5

あなたが返すメディアの種類のためにこの動作が起こっているような気がします。

は次のようにアプリケーション/ vnd.ms-Excelにメディアタイプを変更してみてください:

return File(bindata, "application/vnd.ms-excel", "mytestfile.xls"); 
+1

これはExcel 2010(xslx)の場合にも使用できます:application/vnd.openxmlformats-officedocument.spreadsheetml.sheet – Iridio

8

あなたが保存-としてダイアログが常に表示されるように、それは自動的にContent-Dispositionヘッダを付加File方法にファイル名を指定します。だからあなたのコードがうまくいかないと言ったら少し驚いています。

Response.AppendHeader("Content-Disposition", "attachment; filename=mytestfile.xls"); 
+0

Typoがそこにあります。それは "Content-Disposition"でなければなりません。 –

+0

@ Jared Peless、はい、私はちょうどそれに気づき、修正しました。 –

4

あなたはこれを試すことができます::

return new FileContentResult(bindata, "application/vnd.ms-excel") 
      { 
       FileDownloadName = "mytestfile.xls") 
      }; 

・ホープ、このことができますまた、手動でこのヘッダを設定しようとすることができます。

関連する問題