文件下载后更新页面

前几天我在堆栈溢出的一些精彩帮助后整理了一个下载脚本。 但是我现在发现文件下载后我需要重新加载页面以摆脱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; } } 

感谢您的任何帮助,您可以提供!

当您发回文件供用户下载时, HTTP请求。 换句话说,您可以进行回复以刷新浏览器页面也可以发送文件供用户下载。 如果没有特殊的技巧,你不可能做到这两点。

这就是大多数网站下载文件的原因,它首先会将您带到一个新页面,上面写着“您的下载即将开始”,然后随后将您“重定向”到文件以使用元刷新或javascript下载。

例如,当您到这里下载.NET 4运行时:

http://www.microsoft.com/downloads/en/confirmation.aspx?FamilyID=0a391abd-25c1-4fc0-919f-b21f31ab88b7&displaylang=en&pf=true

它呈现页面,然后使用以下元刷新标记实际为用户提供要下载的文件:

  

你可能需要在你的应用程序中做类似的事情。 但是,如果您真的对在文件完全下载做某事感兴趣,那么您就不幸了,因为没有事件可以将其传达给浏览器。 唯一的方法是在上传附件时像gmail一样使用AJAX上传 。

在我的情况下,我正在使用MVC,我只是希望在选择下载按钮几秒后刷新页面以显示新的下载计数。 我从控制器返回文件。

为此,我只需通过向调用以下脚本(也在视图中)的下载按钮添加onclick事件来更改视图:

 setTimeout(function () { window.location.reload(1); }, 5000); 

它符合我的目的……希望它能帮助别人。

如果需要,这可以快速轻松地进行破解。

第1步:向.aspx页面添加隐藏按钮:

  

步骤2:执行默认的回发操作,最后使用jquery调用注册启动脚本,这将触发隐藏按钮单击并导致文件下载:

 ClientScriptManager cs = Page.ClientScript; cs.RegisterStartupScript(this.GetType(), "modalstuff", "$('.btnExportUploaded').click();", true);