Greatings!
我正在编写一个报告脚本,它会在按钮点击时运行多个报告(pdf)。报告是在Web服务器上创建的,然后我希望用户可以选择下载文件。我已经制定了从服务器下载一个文件的脚本。但我不确定如何下载多个文件? (可能会有大约50个)
运行一个报告后,我将用户重定向到http处理程序脚本。
Response.Redirect("Download.ashx?ReportName=" + "WeeklySummary.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));
HttpContext.Current.Response.Flush();
HttpContext.Current.Response.Clear();
HttpContext.Current.Response.End();
}
public bool IsReusable { get { return false; } }
}
提前致谢,如果您想再查看我的剧本,请告诉我。
答案 0 :(得分:1)
我立即看到的两个选项显然只是简单地重复调用HTTP处理程序。另一个是将它们压缩在服务器上并通过线路发送一个zip文件。您可以使用内置的GZipStream类来完成此任务。
此外,您还需要在处理程序中添加一些代码,以便在下载后清理这些临时文件。