ibcadmin 发表于 2013-6-6 08:37:46

ASP.NET如何下载PDF文件

C#如何下载PDF文件

方法一:可能是最简单的、最短的方式:

Response.ContentType = "application/pdf";

Response.AppendHeader("Content-Disposition", "attachment;

filename=MyFile.pdf");Response.TransmitFile(Server.MapPath("~/Files/MyFile.pdf"));

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文件无法打开的方案

本文介绍了一种在ASP.NET中下载文件的方法。
方法一:可能是最简单的、最短的方式:
Response.ContentType = "application/pdf";
Response.AppendHeader("Content-Disposition", "attachment; filename=MyFile.pdf");
Response.TransmitFile(Server.MapPath("~/Files/MyFile.pdf"));
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文件无法打开的方案
    protected void Button1_Click(object sender, EventArgs e)
   {
         string path;
         try
         {
             path = Request.PhysicalApplicationPath + "/" + Session["pdfpath"].ToString() + "/PDF/" + Session["mlmc"].ToString() + ".pdf";
         }
         catch (Exception)
         {
             return;
         }
         System.IO.Stream iStream = null;
         byte[] buffer = new Byte;
         int length;
         long dataToRead;
         string filename = Session["mlmc"].ToString() + ".pdf";

         try
         {
             iStream = new System.IO.FileStream(path, System.IO.FileMode.Open, System.IO.FileAccess.Read, System.IO.FileShare.Read);
             dataToRead = iStream.Length;
             Response.Clear();
             Response.ClearHeaders();
             Response.ClearContent();
             Response.ContentType = "application/pdf"; //文件类型
             Response.AddHeader("Content-Length", dataToRead.ToString());//添加文件长度,进而显示进度
             Response.AddHeader("Content-Disposition", "attachment; filename=" + HttpUtility.UrlEncode(filename, System.Text.Encoding.UTF8));
             while (dataToRead > 0)
             {
               if (Response.IsClientConnected)
               {
                     length = iStream.Read(buffer, 0, 10000);
                     Response.OutputStream.Write(buffer, 0, length);
                     Response.Flush();

                     buffer = new Byte;
                     dataToRead = dataToRead - length;
               }
               else
               {
                     dataToRead = -1;
               }
             }
            
         }
         catch (Exception ex)
         {
             Response.Write("文件下载时出现错误!");
         }
         finally
         {
             if (iStream != null)
             {
               iStream.Close();
             }
             //结束响应,否则将导致网页内容被输出到文件,进而文件无法打开
             Response.End();
         }         
   }


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



chao2332601 发表于 2013-6-15 23:53:46

谢谢分享!!!
页: [1]
查看完整版本: ASP.NET如何下载PDF文件