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     }  

通过以上代码,可在浏览器中打开一个“打开/保存”对话框来下载并保存文件。

 

你可能感兴趣的:(asp.net)