2010-10-20 4 views
0

Greatings!télécharger plusieurs fichiers en utilisant Ihttphandler

Je travaille sur un script de reporting qui exécute un certain nombre de rapports (pdf) en cliquant sur le bouton. Les rapports sont créés sur le serveur Web, puis je voudrais que l'utilisateur ait la possibilité de télécharger les fichiers. J'ai élaboré le script pour télécharger un fichier du serveur. Mais je ne suis pas sûr de savoir comment télécharger plusieurs fichiers? (il y en aura probablement environ 50)

Après avoir exécuté un rapport, je redirige l'utilisateur vers un script de gestionnaire 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; } } 

} 

Merci d'avance, s'il vous plaît laissez-moi savoir si vous souhaitez voir plus de mon script.

Répondre

1

Les 2 options que je vois tout de suite sont évidentes pour appeler simplement le gestionnaire HTTP à plusieurs reprises. Un autre serait de les compresser sur le serveur et envoyer un fichier zip sur le fil. Vous pouvez utiliser la classe GZipStream intégrée pour accomplir ceci.

De même, vous devrez ajouter du code dans votre gestionnaire pour nettoyer ces fichiers temporaires une fois qu'ils ont été téléchargés.

+0

Je pensais juste à caler les charges de Headler HTTP de fois, mais je ne savais pas s'il y avait une meilleure façon de le faire ou non. Pensez que je vais les compresser. Merci pour le lien! – flyersun

Questions connexes