1511月/11
ASP.NET MVC 3でファイルダウンロード
この前、ASP.NET MVC 3でファイルダウンロードする方法として、ネイティブなResponseオブジェクト処理をすればちゃんとできたという話を書いたけど、もっと圧倒的に簡単な方法があった。
普通のコントローラのアクションメソッドの戻り値では、ViewResultを返してViewでのレンダリング結果を返しているけれども、第3回 ActionResultオブジェクトでアクション操作も自由自在 - @ITにあるとおり、ActionResultにはFilePathResultなんていう、ファイルの内容をそのまま返すActionResultも用意されていた。ってことで、
string filename = ""; //ダウンロードしたいファイルパス string downloadname = ""; // ダウンロードの際に指定したいファイル名 var result = new FilePathResult(filename, "application/octet-stream"); // content-typeは適当にどうぞ result.FileDownloadName = downloadname; return result;
なんてアクションメソッド内で書けば、ファイルダウンロード処理が行われる。FileDownloadNameを指定するとContent-Dispositionヘッダがつく。
ASP.NET MVC 3はVisual Studio 2010で自動的にヘルプドキュメント検索が効かないから、こういう便利な機能があちこちに隠れていそうだな。でも、フレームワークのドキュメントを全部読むのはきついからなー。ぼちぼち隙間で読もう。
関連する投稿:
- None Found
テニス日記 »
« 2011-11-15のつぶやき