asp.net 2.0を使用してダウンロードアクションをWebページから実装する最良の方法は何ですか?asp.netでのファイルダウンロードの実装方法
アクションのログファイルは、[Application Root]/Logsというディレクトリに作成されます。私は完全なパスを持っており、クリックすると、IISサーバーからユーザーのローカルPCにログファイルをダウンロードするボタンを提供したいと考えています。
asp.net 2.0を使用してダウンロードアクションをWebページから実装する最良の方法は何ですか?asp.netでのファイルダウンロードの実装方法
アクションのログファイルは、[Application Root]/Logsというディレクトリに作成されます。私は完全なパスを持っており、クリックすると、IISサーバーからユーザーのローカルPCにログファイルをダウンロードするボタンを提供したいと考えています。
このヘルプん:
http://www.west-wind.com/weblog/posts/76293.aspx
Response.ContentType = "application/octet-stream";
Response.AppendHeader("Content-Disposition","attachment; filename=logfile.txt");
Response.TransmitFile(Server.MapPath("~/logfile.txt"));
Response.End();
Response.TransmitFileではなくResponse.WriteFileの、大きなファイルを送信する受け入れられた方法です。
これの重要な部分はResponse.End()です。ダウンロードしなくてもダウンロードが破損したり、デジタル署名が壊れたり、奇妙なことが起こることはありません –
PNGファイルでは動作しません。どうすればいいですか? –
別のURLからリモートファイルを取得するために使用できますか? – AlexVPerl
http://forums.asp.net/p/1481083/3457332.aspx
string filename = @"Specify the file path in the server over here....";
FileInfo fileInfo = new FileInfo(filename);
if (fileInfo.Exists)
{
Response.Clear();
Response.AddHeader("Content-Disposition", "attachment; filename=" + fileInfo.Name);
Response.AddHeader("Content-Length", fileInfo.Length.ToString());
Response.ContentType = "application/octet-stream";
Response.Flush();
Response.TransmitFile(fileInfo.FullName);
Response.End();
}
更新:
初期コード
Response.AddHeader("Content-Disposition", "inline;attachment; filename=" + fileInfo.Name);
"インライン;アタッチメント" を有するコンテンツ配置のために、すなわち二つの値。
正確に起動したときはわかりませんが、Firefoxではのみというファイル名が表示されませんでした。ファイルダウンロードボックスに、Webページの名前とその拡張子(pagename.aspx)が表示されます。ダウンロード後、名前を実際の名前に戻します。ファイルが正常に開きます。
this pageごとに、先着順で動作します。値をattachment
に変更するだけで問題が解決されました。
PS:これがベストプラクティスかどうかはわかりませんが、問題は解決しています。
-1:マーティン氏によると、WriteFileの代わりにTransmitFileを使用します。大きなファイルのために壊れた – Niki
+1の修正のための答え! – bnieland
私はModalPopupExtenderの中にあるボタンでこれをやっていますが、更新パネルを操作しても機能しません。しかし、modalpopup/updatepanelエリア外にボタンを移動するとそれは完璧に動作するのですか?これを回避する方法は? – JoeManiaci
小さなファイルにもResponse.TransmitFileを使用しますか? –