Response.TransmitFile のヘルプ
投稿する前に、ここで検索したところ、このような類似のスレッドがいくつか見つかりました
Response.WriteFile / Response.BinaryWrite / Response.TransmitFile のトラブル (ASP.NET)
ソリューションが含まれる場所Response.End();
さて、最後の小さな行を含めましたが、まだ何も起こっていません.
ASPX ページの本文にも を含めました<asp:Label ID="lblErrMsg" runat="server" />
が、何も書き込まれていません。
public void DownloadFile(string nameOnly) {
if (!String.IsNullOrEmpty(nameOnly)) {
lblErrMsg.Text = "Transfer request for " + nameOnly;
string filename = Server.MapPath(nameOnly);
try {
if (!String.IsNullOrEmpty(filename)) {
Response.Buffer = true;
Response.Clear(); // clear the buffer
Response.Cache.SetCacheability(HttpCacheability.NoCache);
if (-1 < filename.IndexOf(".avi")) {
Response.ContentType = "video/x-msvideo";
lblErrMsg.Text = "Content Type Set to Video.";
} else if (-1 < filename.IndexOf(".pdf")) {
Response.ContentType = "Application/pdf";
lblErrMsg.Text = "Content Type Set to PDF.";
} else if (-1 < filename.IndexOf(".rar")) {
Response.ContentType = "Application/x-rar-compressed";
lblErrMsg.Text = "Content Type Set to RAR.";
} else {
Response.ContentType = "Application/octet-stream";
lblErrMsg.Text = "Content Type Set to Octet Steam.";
}
FileInfo file = new FileInfo(filename);
Response.AddHeader("Content-Disposition", "attachment; filename=" + nameOnly);
Response.AddHeader("Content-Length", file.Length.ToString());
lblErrMsg.Text = "Content Headers added.";
Response.TransmitFile(file.FullName);
lblErrMsg.Text = "Transfer Completing...";
Response.End();
lblErrMsg.Text = "Transfer Complete.";
} else {
throw new Exception(string.Format("Server was unable to locate file \"{0}\".", nameOnly));
}
} catch (Exception err) {
lblErrMsg.Text = err.Message;
}
}
}
- 私が間違ったことを誰かが見ていますか?
私が言ったように、lblErrMsg.Text
空白ですが、ダウンロードダイアログは表示されず、何も起こっていないようです.
アップデート:
私はアリストスと協力しています。彼の提案を使用して次のように方法を変更しましたが、サンプルのダウンロード ファイルはまだ表示されません。
private string Download(string nameOnly) {
string outputLine = null;
if (!String.IsNullOrEmpty(nameOnly)) {
string filename = Server.MapPath(nameOnly);
if (!String.IsNullOrEmpty(filename)) {
try {
Response.Buffer = false;
Response.Clear(); // clear the buffer
Response.Cache.SetCacheability(HttpCacheability.NoCache);
if (-1 < filename.IndexOf(".avi")) {
Response.ContentType = "video/x-msvideo";
} else if (-1 < filename.IndexOf(".pdf")) {
Response.ContentType = "Application/pdf";
} else if (-1 < filename.IndexOf(".rar")) {
Response.ContentType = "Application/x-rar-compressed";
} else {
Response.ContentType = "Application/octet-stream";
}
FileInfo file = new FileInfo(filename);
Response.AddHeader("Content-Disposition", "attachment; filename=" + nameOnly);
Response.AddHeader("Content-Length", file.Length.ToString());
Response.TransmitFile(file.FullName);
} catch (Exception err) {
outputLine = err.Message;
} finally {
Response.Flush();
}
} else {
outputLine = string.Format("Server was unable to locate file \"{0}\".", nameOnly);
}
}
if (String.IsNullOrEmpty(outputLine)) {
Response.Redirect("~/Default.aspx");
}
return outputLine;
}