• 追加された行はこの色です。
  • 削除された行はこの色です。
''現在執筆中です。''

*データをファイルとしてダウンロードできるようにする [#cf2ca07e]

ここでは指定したデータをダイアログを表示して、Webブラウザでダウンロードできるようにする方法を紹介します。基本的な考え方は、「[[ファイルをダウンロードして保存できるようにする>../ファイルをダウンロードできるようにする]]」と同じです。

**バイナリデータをダウンロードできるようにする [#ve858345]

まず、バイナリデータをダウンロードできるようにする方法です。

次のコードを実行すると、Internet Explorerでは、「ファイルのダウンロード」ダイアログが表示され、デフォルトのファイル名が「test.bin」として、バイナリデータ"downloadData"で保存できるようにしています。このコードは、ページクラスに記述されているものとします。

#code(vbnet){{
}}

#code(csharp){{
//保存するバイナリデータ
byte[] downloadData = { 0, 1, 2, 3, 4 };
//保存時に提案するデフォルトのファイル名
string downloadName = "test.bin";

//MINE型を指定する
this.Response.ContentType = "application/octet-stream";
//Content-Dispositionヘッダを追加する
this.Response.AddHeader("Content-Disposition",
    "attachment; filename=" + downloadName);
//ファイルを書き込む
this.Response.BinaryWrite(downloadData);
//送信して終了
this.Response.End();
}}

「[[ファイルをダウンロードして保存できるようにする>../ファイルをダウンロードできるようにする]]」で紹介している注意事項のほとんどがこの場合でも当てはまりますので、ご確認ください。

**テキストをダウンロードできるようにする [#yc9c30d8]

テキストファイルでも上記のバイナリファイルの方法と全く同じやり方で可能です。この場合は、Encoding.GetBytesメソッドにより文字列をバイト型配列に変換します。詳しくは、「[[文字列を文字コードを指定してバイト型配列のデータに変換する>http://dobon.net/vb/dotnet/string/getencoding.html]]」をご覧ください。

ここではそのようなやり方ではなく、Writeメソッドを使用した方法を示します。

#code(vbnet){{
}}

#code(csharp){{
//保存するテキストデータ
string downloadText = "こんちには。";
//保存時に提案するデフォルトのファイル名
string downloadName = "test.txt";

this.Response.Clear();
//文字エンコーディングを指定する(ここではShift JIS)
this.Response.ContentEncoding =
    System.Text.Encoding.GetEncoding("Shift_JIS");
//MINE型を指定する
this.Response.ContentType = "application/download";
//Content-Dispositionヘッダを追加する
this.Response.AddHeader("Content-Disposition",
    "attachment; filename=" + downloadName);
//ファイルを書き込む
this.Response.Write(downloadText);
//送信して終了
this.Response.End();
}}

このようにすると、"Content-Type"の"charset"が自動的に付けられるようです。

上記の例では、ContentTypeを"application/download"にしています。これを"application/octet-stream"(あるいは、"text/plain")にすると、デフォルトの保存ファイル名の拡張子がないとき、強制的に".txt"がファイル名の最後につけられます(IE6.0で確認)。また"application/octet-stream"では、デフォルトのファイル名の拡張子がないときでも「ファイルのダウンロード」ダイアログに「開く」ボタンが表示されますが、"application/download"では表示されません。

**関連 [#q8ae0c5f]

-[[ファイルをダウンロードして保存できるようにする>../ファイルをダウンロードできるようにする]]

//これより下は編集しないでください
#pageinfo(,2007-11-08 (木) 03:43:30,DOBON!,2007-11-08 (木) 03:43:30,DOBON!)


[ トップ ]   [ 新規 | 子ページ作成 | 一覧 | 単語検索 | 最終更新 | ヘルプ ]