FileStreamResult クラス (System.Web.Mvc)

提供: MonoBook
2012年3月30日 (金) 05:08時点におけるimported>Administratorによる版 (ページの作成:「FileStreamResult クラス (System.Web.Mvc) FileStreamResultクラスとは、ストリーム(Streamクラスとその派生クラス)の内容を、バイナ...」)
(差分) ← 古い版 | 最新版 (差分) | 新しい版 → (差分)
ナビゲーションに移動 検索に移動

FileStreamResult クラス (System.Web.Mvc)

FileStreamResultクラスとは、ストリーム(Streamクラスとその派生クラス)の内容を、バイナリデータとしてそのまま送信するActionResultクラスを継承したクラスである。

単純に送信するだけであれば、ストリームとMIMEタイプを指定するだけで使えよく、非常に手軽である。ダウンロード確認ダイアログを表示する場合はHTTPレスポンスヘッダーにContent-Dispositionを設定する(例参照)。

ダウンロード確認ダイアログを表示する

ストリーム上のCSVファイルを送信し、ダウンロードの確認ダイアログを表示する例。

public FileStreamResult DownloadCsv()
{
    // Content-Dispositionヘッダーに「attachement」と設定することで、
    // ブラウザにダウンロードするかの確認ダイアログを表示させる。
    //
    // Content-Dispositionの値
    //   attachment = ダウンロード
    //   inline     = インライン表示
    // 
    // 「filename=」という部分を書き換えれば、多くのブラウザで保存
    // ダイアログの初期ファイル名となる。IE5.5以前はダメらしい。
    // さすがにもう存在しないだろう。
    HttpContext.Response.AddHeader(
        "Content-Disposition", 
        "attachment; filename=file.csv");

    // Streamを取得する。
    // CreateCsvメソッドは仮にあるものとする。
    Stream fileStream = CreateCsv();

    // fileStreamの内容を結果として送信する。
    return new FileStreamResult(fileStream, "text/csv");
}

関連項目

参考文献

外部リンク