25

asp.net 2.0を使用してWebページからダウンロードアクションを実装する最良の方法は何ですか?

アクションのログ ファイルは、[Application Root]/Logs というディレクトリに作成されます。私は完全なパスを持っており、クリックするとIISサーバーからユーザーのローカルPCにログファイルをダウンロードするボタンを提供したいと考えています。

4

2 に答える 2

38

これは役に立ちますか:

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 の代わりに、大きなファイルを送信する方法として受け入れられています。

于 2008-09-01T09:25:28.073 に答える
12

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);

「inline;attachment」、つまり Content Disposition の 2 つの値があります。

正確な時期はわかりませんが、Firefox では適切なファイル名だけが表示されませんでした。ファイルのダウンロード ボックスが表示され、Web ページの名前とその拡張子 ( pagename.aspx ) が表示されます。ダウンロード後、名前を実際の名前に戻すと、ファイルが正常に開きます。

このページによると、先着順で運営されています。値を変更するattachmentだけで問題は解決しました。

PS: これがベスト プラクティスかどうかはわかりませんが、問題は解決されています。

于 2010-04-06T08:56:41.533 に答える