FileStreamResult クラス (System.Web.Mvc)

提供: MonoBook
FileStreamResultから転送)
ナビゲーションに移動 検索に移動

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");
        }
    }

関連項目[編集 | ソースを編集]

参考文献[編集 | ソースを編集]

外部リンク[編集 | ソースを編集]