2010-10-20 4 views
0

Greatings!загрузка нескольких файлов с помощью Ihttphandler

Я работаю над скриптом отчетности, который запускает несколько отчетов (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

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

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

+0

Я думал о том, чтобы просто рассылать загрузки HTTP Headler, но не был уверен, есть ли лучший способ сделать это или нет. Подумайте, я их задержу. Спасибо за ссылку! – flyersun

Смежные вопросы