views:

12

answers:

1

Greatings!

I'm working on a reporting script which runs a number of reports (pdf) on button click. The reports are created on the web server then I'd like the user to be given the option to download the files. I have worked out the script for downloading one file from the server. But I'm not sure how to download multiple files? (there will probably be about 50)

After I run one report I redirect the user to a http handler script.

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

}

Thanks in advance, please let me know if you'd like to see any more of my script.

+1  A: 

The 2 options I see right away is the obvious one to simply call the HTTP Handler repeatedly. Another one would be to zip them on the server and send a zip file across the wire. You could use the built in GZipStream class to accomplish this.

Also, you'll want to add some code in your handler to clean up those temp files once they're downloaded.

Steve Danner
I had thought about just caling the HTTP Headler loads of times but wasn't sure if there was a better way to do it or not. Think I'll zip them. Thanks for the link!
flyersun