загрузка нескольких файлов с помощью Ihttphandler - PullRequest
0 голосов
/ 20 октября 2010

ПОЗДРАВЛЕНИЯ!

Я работаю над сценарием отчетности, который запускает несколько отчетов (pdf) по нажатию кнопки. Отчеты создаются на веб-сервере, и я бы хотел, чтобы пользователю была предоставлена ​​возможность загружать файлы. Я разработал скрипт для загрузки одного файла с сервера. Но я не уверен, как загрузить несколько файлов? (вероятно, будет около 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; } } 

}

Заранее спасибо, пожалуйста, дайте мне знать, если вы хотите увидеть больше моего сценария.

1 Ответ

1 голос
/ 20 октября 2010

2 варианта, которые я вижу сразу, это очевидный способ повторного вызова HTTP-обработчика.Еще один способ - заархивировать их на сервере и отправить файл по сети.Для этого вы можете использовать встроенный класс GZipStream .

Кроме того, вы захотите добавить некоторый код в свой обработчик для очистки этих временных файлов после их загрузки.

...