• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

ASP.NET实现PDF文件下载[转]

原作者: [db:作者] 来自: [db:来源] 收藏 邀请
本文介绍了一种在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
一只站在树上的鸟儿,从来不会害怕树枝会断裂,因为它相信的不是树枝,而是它自己的翅膀。与其每天担心未来,不如努力做好现在。
 
本文介绍了一种在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人参与评论

请发表评论

全部评论

专题导读
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap