C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[1]: ASP.NETでファイルダウンロードのURLが知りたい


(過去ログ 133 を表示中)

[トピック内 2 記事 (1 - 2 表示)]  << 0 >>

■78310 / inTopicNo.1)  ASP.NETでファイルダウンロードのURLが知りたい
  
□投稿者/ ぽっぽ (1回)-(2016/01/07(Thu) 15:33:37)

分類:[ASP.NET (C#)] 

ファイルダウンロードのメソッドを作成したのですが
そのURLはどのような規則になっているのでしょうか。

_Defaultクラスに以下を記述しました。
/// <summary>
/// テキストファイルダウンロード
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnTxt_Click(object sender, EventArgs e)
{
var url = Request.Url.AbsoluteUri;
fnDownloadFile("xxx.txt", "text/plain");
}


private void fnDownloadFile(string name, string content)
{
// Response情報クリア
Response.ClearContent();
// HTTPヘッダー情報設定
Response.AddHeader("Content-Disposition", "attachment;filename=" + name);
Response.ContentType = content;
// ファイル書込(データによりResponse.WriteFile()、Response.Write()、Response.BinaryWrite()を使い分ける。)
Response.WriteFile(@"d:\work\xxx");
// レスポンス終了
Response.End();
}

http://localhost:55804/Default/btnTxt_Clickとしてみましたが、呼び出すことができませんでした。
ボタンを配置し実行するとダウンロードできました。

引用返信 編集キー/
■78323 / inTopicNo.2)  Re[1]: ASP.NETでファイルダウンロードのURLが知りたい
□投稿者/ WebSurfer (765回)-(2016/01/07(Thu) 18:41:25)
No78310 (ぽっぽ さん) に返信
> ファイルダウンロードのメソッドを作成したのですが
> そのURLはどのような規則になっているのでしょうか。

ブラウザがその URL に要求をかけたら、要求を受けた Web サーバーがファイルを
ダウンロードするようになっているというのが「規則」です。

なので、Default.aspx を要求したら即ダウンロードできるようになっていなけれ
ばダメです。

それには、btnTxt_Click メソッドでダウンロードのためのコードを実行するので
はなく、Page.Load イベントのハンドラで実行するようにしてみてください。

そうすれば、Default.aspx を要求すれば即ダウンロードされると思います。

今のコードでは、Web サーバーがファイルをダウンロードするのは、初期画面がブ
ラウザに描画された後、ユーザーがボタンをクリックしてポストバックされ、サー
バー側で Button.Click イベントが発生した時というのは分かりますか?

URL に btnTxt_Click を追加してもイベントは発生しないのは分かりますか?


#ダウンロードに使うのは aspx ページではなくて、HTTP ハンドラを使うことを
 お勧めします。理由は以下の記事の通りです。

ダウンロードは HTTP ハンドラで
http://surferonwww.info/BlogEngine/post/2013/02/16/use-http-handler-for-downloading-files.aspx
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -