2013-09-30 7 views
0

Я пытаюсь загрузить файлы, которые находятся в определенной папке. Я использую этот код, но он дает мне ошибку в Reponse.End(); -> Невозможно вычислить выражение, потому что код оптимизирован или уроженец кадра на вершине стеки вызововasp.net - загрузка файлов в определенную папку

if (m.Path.EndsWith(".txt")) 
      { 
       Response.ContentType = "application/txt"; 
      } 
      else if (m.Path.EndsWith(".pdf")) 
      { 
       Response.ContentType = "application/pdf"; 
      } 
      else if (m.Path.EndsWith(".docx")) 
      { 
       Response.ContentType = "application/docx"; 
      } 
      else 
      { 
       Response.ContentType = "image/jpg"; 
      } 
      string nameFile = m.Path; 

      Response.AppendHeader("Content-Disposition", "attachment;filename=" + nameFile); 

      Response.TransmitFile(Server.MapPath(ConfigurationManager.AppSettings["IMAGESPATH"]) + nameFile); 
      Response.End(); 

Я также попытался Response.Write, но это дает мне ту же ошибку.

ответ

1

Response.End выбросит ThreadAbortException и там только compatibility with old ASP и вы должны использовать HttpApplication.CompleteRequest

вот пример:

public class Handler1 : IHttpHandler 
{  
    public void ProcessRequest(HttpContext context) 
    { 
    context.Response.AppendHeader("Content-Disposition", "attachment;filename=pic.jpg"); 
    context.Response.ContentType = "image/jpg"; 
    context.Response.TransmitFile(context.Server.MapPath("/App_Data/pic.jpg")); 
    context.ApplicationInstance.CompleteRequest(); 
    } 

    public bool IsReusable 
    { 
    get 
    { 
     return false; 
    } 
    } 
} 
+0

теперь не имеет ошибок, но и ничего не делает. не загружает файл. – Jcbo

+0

странно, я пробовал этот код в обработчике ashx и работает нормально, обновил свой ответ на этом примере. Вы обслуживаете это от обработчика? –

+0

это работает :) спасибо – Jcbo

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