ASP.NET 實現PDF文件下載[轉]


本文介紹了一種在ASP.NET中下載文件的方法。
方法一:可能是最簡單的、最短的方式:

1  Response.ContentType = "application/pdf";
2  Response.AppendHeader("Content-Disposition", "attachment; filename=MyFile.pdf");
3  Response.TransmitFile(Server.MapPath("~/Files/MyFile.pdf"));
4  Response.End();

  第一步是設置文檔內容的類型,上面的例子是下載一個.PDF格式的文件。下面是最常用的一些文檔內容類型:

 .htm, .html     Response.ContentType = "text/HTML";
 .txt    Response.ContentType = "text/plain";
 .doc, .rtf, .docx    Response.ContentType = "Application/msword";
 .xls, .xlsx    Response.ContentType = "Application/x-msexcel";
 .jpg, .jpeg    Response.ContentType = "image/jpeg";
 .gif    Response.ContentType =  "image/GIF";
 .pdf    Response.ContentType = "application/pdf";


方法二:解決.PDF文件較大時,可能導致所下載的PDF文件無法打開的方案
 1     protected void Button1_Click(object sender, EventArgs e)  
 2     {  
 3         string path;  
 4         try  
 5         {  
 6             path = Request.PhysicalApplicationPath + "/" + Session["pdfpath"].ToString() + "/PDF/" + Session["mlmc"].ToString() + ".pdf";  
 7         }  
 8         catch (Exception)  
 9         {  
10             return;  
11         }  
12         System.IO.Stream iStream = null;  
13         byte[] buffer = new Byte[10000];  
14         int length;  
15         long dataToRead;  
16         string filename = Session["mlmc"].ToString() + ".pdf";  
17   
18         try  
19         {  
20             iStream = new System.IO.FileStream(path, System.IO.FileMode.Open, System.IO.FileAccess.Read, System.IO.FileShare.Read);  
21             dataToRead = iStream.Length;  
22             Response.Clear();  
23             Response.ClearHeaders();  
24             Response.ClearContent();  
25             Response.ContentType = "application/pdf"; //文件類型  
26             Response.AddHeader("Content-Length", dataToRead.ToString());//添加文件長度,進而顯示進度  
27             Response.AddHeader("Content-Disposition", "attachment; filename=" + HttpUtility.UrlEncode(filename, System.Text.Encoding.UTF8));  
28             while (dataToRead > 0)  
29             {  
30                 if (Response.IsClientConnected)  
31                 {  
32                     length = iStream.Read(buffer, 0, 10000);  
33                     Response.OutputStream.Write(buffer, 0, length);  
34                     Response.Flush();  
35   
36                     buffer = new Byte[10000];  
37                     dataToRead = dataToRead - length;  
38                 }  
39                 else  
40                 {  
41                     dataToRead = -1;  
42                 }  
43             }  
44               
45         }  
46         catch (Exception ex)  
47         {  
48             Response.Write("文件下載時出現錯誤!");  
49         }  
50         finally  
51         {  
52             if (iStream != null)  
53             {  
54                 iStream.Close();  
55             }  
56             //結束響應,否則將導致網頁內容被輸出到文件,進而文件無法打開  
57             Response.End();  
58         }          
59     }  

通過以上代碼,可在瀏覽器中打開一個“打開/保存”對話框來下載並保存文件。
復制代碼地址:http://www.cnblogs.com/lwenwen/archive/2013/06/05/3119256.html
一只站在樹上的鳥兒,從來不會害怕樹枝會斷裂,因為它相信的不是樹枝,而是它自己的翅膀。與其每天擔心未來,不如努力做好現在。
 
 
 
好文要頂  關注我  收藏該文   
0
0
 
 
 
« 上一篇: mysql 筆記
» 下一篇: Rhythmk 一步一步學 JAVA(6): JSP 語法學習筆記


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM