.NetMvc从http或本地下载pdf文件

1、帮助类

 1 public static class PdfHelper
 2     {
 3         #region 从http链接下载
 4         public static void Download(string url, string name, System.Web.Mvc.Controller controller)
 5         {
 6             var bytes = GetByteByRemoteURL(url);
 7             controller.Response.Charset = "UTF-8";
 8             controller.Response.ContentType = "application/octet-stream";
 9             controller.Response.ContentEncoding = Encoding.Default;
10             controller.Response.AddHeader("Content-Disposition", "attachment; filename=" + name.Replace(" ", "") + ".pdf");
11             controller.Response.BinaryWrite(bytes);
12             controller.Response.Flush();
13             controller.Response.End();
14         }
15         #endregion
16 
17         #region 调用本地文件使用返回pdfbyte数组
18 
19         /// <summary>
20         /// 调用本地文件使用返回pdfbyte数组
21         /// </summary>
22         /// <param name="srcPdfFile">‘D:\in2434341555551.pdf’</param>
23         /// <returns></returns>
24 
25         public static byte[] GetSignaturePDFByte(string srcPdfFile)
26         {
27             using (FileStream fsRead = new FileStream(srcPdfFile, FileMode.Open, FileAccess.Read, FileShare.Read))
28             {
29                 int fsLen = (int)fsRead.Length;
30                 byte[] hebyte = new byte[fsLen];
31                 fsRead.Read(hebyte, 0, hebyte.Length);
32                 return hebyte;
33             }
34         }
35 
36         #endregion 调用本地文件使用返回pdfbyte数组
37 
38         #region 从网站上下载pdf,转化为字节流
39         /// <summary>
40         /// 从网站上下载pdf,转化为字节流
41         /// </summary>
42         /// <param name="srcPdfFile">文件地址:'https://******/group2/M00/00/04/wKj-mlpcoZ2IUbK5AACrpaV6k98AAAB6gAAAAAAAKu9562.pdf'</param>
43 
44         /// <returns></returns>
45         public static Byte[] GetByteByRemoteURL(string srcPdfFile)
46         {
47             byte[] arraryByte;
48             HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(srcPdfFile);
49             req.Method = "GET";
50             using (WebResponse wr = req.GetResponse())
51             {
52                 StreamReader responseStream = new StreamReader(wr.GetResponseStream(), Encoding.UTF8);
53                 int length = (int)wr.ContentLength;
54                 byte[] bs = new byte[length];
55 
56                 HttpWebResponse response = wr as HttpWebResponse;
57                 Stream stream = response.GetResponseStream();
58 
59                 //读取到内存
60                 MemoryStream stmMemory = new MemoryStream();
61                 byte[] buffer1 = new byte[length];
62                 int i;
63                 //将字节逐个放入到Byte 中
64                 while ((i = stream.Read(buffer1, 0, buffer1.Length)) > 0)
65                 {
66                     stmMemory.Write(buffer1, 0, i);
67                 }
68                 arraryByte = stmMemory.ToArray();
69                 stmMemory.Close();
70             }
71             return arraryByte;
72         }
73 
74         #endregion 从网站上下载pdf,转化为字节流
75 
76     }

2、调用方法

1 public ActionResult Down()
2         {            
3             PdfHelper.Download("http链接", "导出文件名字", this);
4             return new EmptyResult();
5         }

 

3、前端使用

1  function Download() {
2         location.href = "/xx/down";
3     }

 

posted @ 2020-07-16 11:53  grax  阅读(662)  评论(0编辑  收藏  举报