zoukankan      html  css  js  c++  java
  • 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     }  
    通过以上代码,可在浏览器中打开一个“打开/保存”对话框来下载并保存文件。
  • 相关阅读:
    Direct2D 变换
    DWrite 文字
    Windows基础窗体编程
    .net delegate(委托类型)
    详说new和overrid区别
    类与结构区别
    IIS的Gzip压缩
    ASP.NET 状态服务和session丢失问题解决方案
    Fiddler使用
    Castle系列教程(转)
  • 原文地址:https://www.cnblogs.com/dean-Wei/p/3630741.html
Copyright © 2011-2022 走看看