ASP.NET 实现Base64文件流下载PDF

因为业务需要调用接口获取的是 Base64文件流 需要提供给客户下载PDF文档

源码部分借鉴网上,具体地址忘记了。

 //Base64文件流 
            byte[] buffer = Convert.FromBase64String(decodedString); 
            System.IO.Stream iStream = new System.IO.MemoryStream(buffer);
            try
            {
                int length;
                long dataToRead;
                string filename = sn + ".pdf";//保存的文件名称
                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[10000];
                        dataToRead = dataToRead - length;
                    }
                    else
                    {
                        dataToRead = -1;
                    }
                }
            }
            catch (Exception ex)
            {
                Response.Write("文件下载时出现错误!");
            }
            finally
            {
                if (iStream != null)
                {
                    iStream.Close();
                }
                //结束响应,否则将导致网页内容被输出到文件,进而文件无法打开   
                Response.Flush();
                Response.End();

            }

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏大内老A

[WCF REST] 解决资源并发修改的一个有效的手段:条件更新(Conditional Update)

条件获取(Conditional Update)可以避免相同数据的重复传输,进而提高性能。条件更新(Conditional Update)用于解决资源并发操作问...

1979
来自专栏Pythonista

Golang之Socket

1192
来自专栏码匠的流水账

springboot2输出metrics到influxdb

本文主要研究一下如何将springboot2的metrics输出到influxdb

670
来自专栏清墨_iOS分享

iOS开发按时间排序文件

默认的,我们在开发中,写入沙盒里的文件按文件名排序,如0,1,2,3,4,5,a,b,c,.....z等,但有时候咱们需要将里面的文件按创建时间来排序。这时候...

36810
来自专栏DannyHoo的专栏

OC中根据文件路径获取文件大小

NSString * cachePath = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, ...

812
来自专栏跟着阿笨一起玩NET

C# http Get/POST请求封装类

http://www.sufeinet.com/thread-3-1-1.html

1112
来自专栏大内老A

MVC、MVP以及Model2[下篇]

条件获取(Conditional Update)可以避免相同数据的重复传输,进而提高性能。条件更新(Conditional Update)用于解决资源并发操作问...

1846
来自专栏晓晨的专栏

C#自动识别文件编码

1763
来自专栏华仔的技术笔记

iOS中解码.txt文件在UIWebView出现中文乱码的问题

3414
来自专栏PHP技术

基础知识点总结

//简单实现json到php数组转换功能 private function simple_json_parser($json){ ...

2494

扫码关注云+社区