FileStreamResult クラス (System.Web.Mvc)
ナビゲーションに移動
検索に移動
FileStreamResultクラスとは、ASP.NET MVCのアクション・メソッドの戻り値(ActionResultおよびその派生クラス)として、ストリーム(Streamクラスとその派生クラス)の内容をバイナリデータとしてそのまま送信するFileResultクラスを継承したクラスである。
単純に送信するだけであれば、ストリームとMIMEタイプを指定するだけで使えよく、非常に手軽である。ダウンロード確認ダイアログを表示する場合はHTTPレスポンスヘッダーにContent-Dispositionを設定する(例参照)。
使用例
ダウンロード確認ダイアログを表示する
ストリーム上のCSVファイルを送信し、ダウンロードの確認ダイアログを表示する例。
using System.Web.Mvc;
using System.IO;
public class HomeController : Controller
{
public FileStreamResult DownloadCsv()
{
// Content-Dispositionヘッダーに「attachement」と設定することで、
// ブラウザにダウンロードするかの確認ダイアログを表示させる。
//
// Content-Dispositionの値
// attachment = ダウンロード
// inline = インライン表示
//
// 「filename=」という部分を書き換えれば、多くのブラウザで保存
// ダイアログの初期ファイル名となる。IE5.5以前はダメらしい。
// さすがにもう存在しないだろう。
this.HttpContext.Response.AddHeader(
"Content-Disposition",
"attachment; filename=file.csv");
// Streamを取得する。
// CreateCsvメソッドは仮にあるものとする。
Stream fileStream = CreateCsv();
// fileStreamの内容を結果として送信する。
return new FileStreamResult(fileStream, "text/csv");
}
}
関連項目
- ActionResult - ASP.NET MVCのアクション・メソッドの戻り値として使うベースクラス。
- FileResult - ファイルをダウンロードさせるためのベースクラス。
- FileContentResult - バイト配列をHTTPレスポンスに書き込む。
- FilePathResult - 指定されたファイルパスの中身をHTTPレスポンスに書き込む。
- FileStreamResult - Streamクラスの中身をHTTPレスポンスに書き込む。
- FileResult - ファイルをダウンロードさせるためのベースクラス。
- ASP.NET MVC