2010-05-17 3 views
2

J'ai eu ce code dans une ancienne application Web Forms asp.net pour prendre un MemoryStream et le passer comme réponse affichant un PDF comme réponse. Je travaille maintenant avec une application MVC asp.net et cherche à faire de même, mais comment dois-je montrer le MemoryStream en format PDF en utilisant MVC?Convertir asp.net webforms logique en asp.net MVC

Voici mon code asp.net webforms:

private void ShowPDF(MemoryStream ms) 
    { 
     try 
     { 
      //get byte array of pdf in memory 
      byte[] fileArray = ms.ToArray(); 
      //send file to the user 
      Page.Response.Cache.SetCacheability(HttpCacheability.NoCache); 
      Page.Response.Buffer = true; 
      Response.Clear(); 
      Response.ClearContent(); 
      Response.ClearHeaders(); 
      Response.Charset = string.Empty; 
      Response.ContentType = "application/pdf"; 
      Response.AddHeader("content-length", fileArray.Length.ToString()); 
      Response.AddHeader("Content-Disposition", "attachment;filename=TID.pdf;"); 
      Response.BinaryWrite(fileArray); 
      Response.Flush(); 
      Response.Close(); 
     } 
     catch 
     { 
      // and boom goes the dynamite... 
     } 
    } 

Répondre

2

Voici un blog sur exactement que: http://biasecurities.com/blog/2008/binaryresult-for-asp-net-mvc/

MISE À JOUR: Le dernier commentaire sur ce poste mentionne Response.TransmitFile, vous voudrez peut-être adaptez le code pour l'utiliser si vos fichiers PDF sont volumineux et que vous aurez beaucoup de téléchargements simultanés.

+0

Merci, je l'ai implémenté en utilisant 'Response.TransmitFile' et tout a fonctionné. +1 – Gabe

Questions connexes