HttpWebRequest(跨域下载文件——网络流转换为内存流下载)

简介: 1.Stream 转换为 MemoryStream(Stream不支持查找) MemoryStream StreamToMemoryStream(Stream instream) { MemoryStream outstream = new Mem...

1.Stream 转换为 MemoryStream(Stream不支持查找)

MemoryStream StreamToMemoryStream(Stream instream)
        {
            MemoryStream outstream = new MemoryStream();
            const int bufferLen = 4096;
            byte[] buffer = new byte[bufferLen];
            int count = 0;
            while ((count = instream.Read(buffer, 0, bufferLen)) > 0)
            {
                outstream.Write(buffer, 0, count);
            }
            return outstream;
        }
View Code

2.网络流转化为内存流并下载

HttpWebRequest request = (HttpWebRequest)WebRequest.Create(filePath);
                        request.Method = "GET";
                        using (HttpWebResponse response = request.GetResponse() as HttpWebResponse)
                        {
                            if (response.StatusCode == HttpStatusCode.OK)
                            {
                                Stream rs = response.GetResponseStream();
//网络流转换为内存流
                                var ms = StreamToMemoryStream(rs);
                                ms.Seek(0, SeekOrigin.Begin); int buffsize = (int)ms.Length; //rs.Length 此流不支持查找,先转为MemoryStream
                                byte[] bytes = new byte[buffsize];

                                ms.Read(bytes, 0, buffsize);
                                ms.Flush(); ms.Close();
                                rs.Flush(); rs.Close();
//以文件流的方式下载
                                Response.Charset = "utf-8";
                                Response.ContentEncoding = System.Text.Encoding.GetEncoding("utf-8");
                                Response.ContentType = "application/octet-stream";
                                if (HttpContext.Current.Request.UserAgent.ToUpper().Contains("MSIE") ||
                                    HttpContext.Current.Request.UserAgent.ToUpper().Contains("TRIDENT") ||
                                    HttpContext.Current.Request.UserAgent.ToUpper().Contains("EDGE"))
                                {
                                    name = HttpUtility.UrlEncode(name, System.Text.Encoding.UTF8);
                                }
                                else
                                {
                                    name = name.Replace(" ", "_");
                                }
                                //fileName = HttpUtility.UrlEncode(fileName, System.Text.Encoding.UTF8);
                                Response.AddHeader("Content-Disposition", "attachment;   filename=" + name);
                                Response.BinaryWrite(bytes);
                                Response.Flush();
                                Response.End();
                            }
                        }
View Code

3.网络路径

private string GetContractPathRules(string id, string name) {
            string url = ConfigurationManager.AppSettings["ContractUrl"];
            url = url.TrimEnd('/') + "/";
            return Path.Combine(url, Path.Combine(id + "/", name));
        }
//例如:http://x.x.x.x:8088/xxx/xxx.pdf
View Code

 

目录
相关文章
|
7月前
|
Arthas 存储 算法
深入理解JVM,包含字节码文件,内存结构,垃圾回收,类的声明周期,类加载器
JVM全称是Java Virtual Machine-Java虚拟机JVM作用:本质上是一个运行在计算机上的程序,职责是运行Java字节码文件,编译为机器码交由计算机运行类的生命周期概述:类的生命周期描述了一个类加载,使用,卸载的整个过类的生命周期阶段:类的声明周期主要分为五个阶段:加载->连接->初始化->使用->卸载,其中连接中分为三个小阶段验证->准备->解析类加载器的定义:JVM提供类加载器给Java程序去获取类和接口字节码数据类加载器的作用:类加载器接受字节码文件。
716 55
|
5月前
|
机器学习/深度学习 存储 监控
内部文件审计:企业文件服务器审计对网络安全提升有哪些帮助?
企业文件服务器审计是保障信息安全、确保合规的关键措施。DataSecurity Plus 是由卓豪ManageEngine推出的审计工具,提供全面的文件访问监控、实时异常告警、用户行为分析及合规报告生成功能,助力企业防范数据泄露风险,满足GDPR、等保等多项合规要求,为企业的稳健发展保驾护航。
162 0
|
5月前
|
关系型数据库 分布式数据库 数据库
|
8月前
|
机器学习/深度学习 存储 算法
NoProp:无需反向传播,基于去噪原理的非全局梯度传播神经网络训练,可大幅降低内存消耗
反向传播算法虽是深度学习基石,但面临内存消耗大和并行扩展受限的问题。近期,牛津大学等机构提出NoProp方法,通过扩散模型概念,将训练重塑为分层去噪任务,无需全局前向或反向传播。NoProp包含三种变体(DT、CT、FM),具备低内存占用与高效训练优势,在CIFAR-10等数据集上达到与传统方法相当的性能。其层间解耦特性支持分布式并行训练,为无梯度深度学习提供了新方向。
342 1
NoProp:无需反向传播,基于去噪原理的非全局梯度传播神经网络训练,可大幅降低内存消耗
|
3月前
|
运维 架构师 安全
二层协议透明传输:让跨域二层协议“无感穿越”多服务商网络
简介:本文详解二层协议透明传输技术,适用于企业网工、运营商及架构师,解决LLDP/LACP/BPDU跨运营商传输难题,实现端到端协议透传,提升网络韧性与运维效率。
|
4月前
|
XML JSON JavaScript
从解决跨域CSOR衍生知识 Network 网络请求深度解析:从快递系统到请求王国-优雅草卓伊凡
从解决跨域CSOR衍生知识 Network 网络请求深度解析:从快递系统到请求王国-优雅草卓伊凡
134 0
从解决跨域CSOR衍生知识 Network 网络请求深度解析:从快递系统到请求王国-优雅草卓伊凡
|
9月前
|
网络协议 物联网
VB6网络通信软件上位机开发,TCP网络通信,读写数据并处理,完整源码下载
本文介绍使用VB6开发网络通信上位机客户端程序,涵盖Winsock控件的引入与使用,包括连接服务端、发送数据(如通过`Winsock1.SendData`方法)及接收数据(利用`Winsock1_DataArrival`事件)。代码实现TCP网络通信,可读写并处理16进制数据,适用于自动化和工业控制领域。提供完整源码下载,适合学习VB6网络程序开发。 下载链接:[完整源码](http://xzios.cn:86/WJGL/DownLoadDetial?Id=20)
352 12
|
9月前
|
分布式计算 算法 Java
|
10月前
|
运维 安全 网络安全
VMware NSX 4.2.1.3 下载 - 网络安全虚拟化平台
VMware NSX 4.2.1.3 下载 - 网络安全虚拟化平台
390 0
VMware NSX 4.2.1.3 下载 - 网络安全虚拟化平台
|
存储 缓存 监控
Docker容器性能调优的关键技巧,涵盖CPU、内存、网络及磁盘I/O的优化策略,结合实战案例,旨在帮助读者有效提升Docker容器的性能与稳定性。
本文介绍了Docker容器性能调优的关键技巧,涵盖CPU、内存、网络及磁盘I/O的优化策略,结合实战案例,旨在帮助读者有效提升Docker容器的性能与稳定性。
1150 7

热门文章

最新文章