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

imported>Administrator
編集の要約なし
imported>Administrator
 
(同じ利用者による、間の8版が非表示)
1行目: 1行目:
FileStreamResultクラスとは、ストリーム([[Streamクラス]]とその派生クラス)の内容を、バイナリデータとしてそのまま送信する[[ActionResultクラス]]を継承したクラスである。
FileStreamResultクラスとは、[[ASP.NET MVC]]の[[アクション・メソッド]]の戻り値([[ActionResult]]およびその派生クラス)として、ストリーム([[Streamクラス]]とその派生クラス)の内容をバイナリデータとしてそのまま送信する[[FileResultクラス]]を継承したクラスである。


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


== ==
== 使用例 ==
=== ダウンロード確認ダイアログを表示する ===
=== ダウンロード確認ダイアログを表示する ===
ストリーム上の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>


== 関連項目 ==
== 関連項目 ==
* [[ActionResult]]
* [[ActionResult]] - [[ASP.NET MVC]]のアクション・メソッドの戻り値として使うベースクラス。
** [[FileResult]] - ファイルをダウンロードさせるためのベースクラス。
*** [[FileContentResult]] - バイト配列をHTTPレスポンスに書き込む。
*** [[FilePathResult]] - 指定されたファイルパスの中身をHTTPレスポンスに書き込む。
*** [[FileStreamResult]] -  [[Streamクラス]]の中身をHTTPレスポンスに書き込む。
* [[ASP.NET MVC]]
* [[ASP.NET MVC]]
== 参考文献 ==
== 参考文献 ==
<references/>
<references/>