「FileStreamResult クラス (System.Web.Mvc)」の版間の差分

提供:MonoBook
imported>Administrator
imported>Administrator
7行目: 7行目:
ストリーム上のCSVファイルを送信し、ダウンロードの確認ダイアログを表示する例。
ストリーム上のCSVファイルを送信し、ダウンロードの確認ダイアログを表示する例。
<source lang="csharp">
<source lang="csharp">
public FileStreamResult DownloadCsv()
     using System.Web.Mvc;
{
     using System.IO;
     // Content-Dispositionヘッダーに「attachement」と設定することで、
    // ブラウザにダウンロードするかの確認ダイアログを表示させる。
    //
    // Content-Dispositionの値
    //  attachment = ダウンロード
    //  inline    = インライン表示
    //
    // 「filename=」という部分を書き換えれば、多くのブラウザで保存
    // ダイアログの初期ファイル名となる。IE5.5以前はダメらしい。
    // さすがにもう存在しないだろう。
     HttpContext.Response.AddHeader(
        "Content-Disposition",
        "attachment; filename=file.csv");


     // Streamを取得する。
     public class HomeController : Controller
    // CreateCsvメソッドは仮にあるものとする。
    {
    Stream fileStream = CreateCsv();
        public FileStreamResult DownloadCsv()
 
        {
    // fileStreamの内容を結果として送信する。
            // Content-Dispositionヘッダーに「attachement」と設定することで、
    return new FileStreamResult(fileStream, "text/csv");
            // ブラウザにダウンロードするかの確認ダイアログを表示させる。
}
            //
            // 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");
        }
    }
</source>
</source>



2012年3月30日 (金) 05:30時点における版

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

単純に送信するだけであれば、ストリームと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");
        }
    }

関連項目

参考文献

外部リンク