fly*_*sun 11 c# asp.net ihttphandler
前几天我在堆栈溢出的一些精彩帮助之后整理了一个下载脚本.但是我现在发现在下载文件之后我需要重新加载页面以摆脱aspx页面上的进度模板.在我添加下载代码之前,删除模板的代码工作正常.
删除进度模板的代码: upFinanceMasterScreen.Update();
我试过在重定向到之前和之后调用它 IHttpHandler
Response.Redirect("Download.ashx?ReportName=" + "RequestingTPNLeagueTable.pdf");
public class Download : IHttpHandler {
public void ProcessRequest(HttpContext context)
{
StringBuilder sbSavePath = new StringBuilder();
sbSavePath.Append(DateTime.Now.Day);
sbSavePath.Append("-");
sbSavePath.Append(DateTime.Now.Month);
sbSavePath.Append("-");
sbSavePath.Append(DateTime.Now.Year);
HttpContext.Current.Response.ClearContent();
HttpContext.Current.Response.ContentType = "application/pdf";
HttpResponse objResponce = context.Response;
String test = HttpContext.Current.Request.QueryString["ReportName"];
HttpContext.Current.Response.AppendHeader("content-disposition", "attachment; filename=" + test);
objResponce.WriteFile(context.Server.MapPath(@"Reports\" + sbSavePath + @"\" + test));
}
public bool IsReusable { get { return true; } }
Run Code Online (Sandbox Code Playgroud)
感谢您的任何帮助,您可以提供!
Kir*_*oll 29
当您发回文件供用户下载时,即 HTTP请求.换句话说,您可以进行回复以刷新浏览器页面,也可以发送文件供用户下载.如果没有特殊的技巧,你不可能做到这两点.
这就是大多数网站下载文件时的原因,它首先会将您带到一个新页面,上面写着"您的下载即将开始",然后随后使用元刷新或javascript将您"重定向"到文件中进行下载.
例如,当您到这里下载.NET 4运行时:
它呈现页面,然后使用以下元刷新标记实际为用户提供要下载的文件:
<META HTTP-EQUIV="refresh" content=".1; URL=http://download.microsoft.com/download/9/5/A/95A9616B-7A37-4AF6-BC36-D6EA96C8DAAE/dotNetFx40_Full_x86_x64.exe" />
Run Code Online (Sandbox Code Playgroud)
你可能需要在你的应用程序中做类似的事情.但是,如果您真的对在文件完全下载后做某事感兴趣,那么您运气不好,因为没有事件可以将其传达给浏览器.唯一的方法是在上传附件时像gmail一样使用AJAX上传.
在我的情况下,我正在使用MVC,我只是希望在选择下载按钮后几秒刷新页面以显示新的下载计数.我从控制器返回文件.
为此,我只需通过向调用以下脚本(也在视图中)的下载按钮添加onclick事件来更改视图:
setTimeout(function () {
window.location.reload(1);
}, 5000);
Run Code Online (Sandbox Code Playgroud)
它符合我的目的......希望它能帮助别人.
归档时间: |
|
查看次数: |
23498 次 |
最近记录: |