response.Close、response.End、response.Flush区别(下载文件)
今天在做文件下载功能用到的是response的方法,首先我们要了解这些方法的作用。
1.response.write():将信息写入http响应输出流。
2.response.Flush:向客户端发送当前所有缓冲的输出
3.response.end:将当前所有缓冲的输出发送到客户端,停止该页的执行,并引发EndRequest事件。
4.response.Close:关闭到客户端的套接字连接。
看到这里,我们应该可以想到response实现下载的基本思想:
1.将我们要下载的文件信息写入Http的响应输出流(response.write)
下面我们就可以向客户端输出了,但是要注意在此会有2种方法:1.response.Flush 2.response.end
1.我们使用response.Flush()方法时,就要多一步动作就是关闭/停止输出,为什么要做关闭/停止输出?因为不做这一步就会把整个页面的信息全部输出了,这个不是我们所需要的,所以可以使用【response.End网上都建议用它】或【reponse.Close这个方法的用法我在网上搜了好久都说尽量不用它】
2.使用response.End方法时,我们可以不使用response.Flush的方法了。
注意:上面所说的是我本地调试通过的两种方法
1.使用Flush和Close可以通过并且没有报错的
2.使用End方法也是可以的
3.使用Flush和End我感觉多余但是也是可行的
此文是自己总结,如有错误还望高手指出,大家共同学习
1
2
3
4
5
6
7
8
9
10
11
12
13
|
string l_strFileName = "FileName" ; byte [] l_bytFileData = 把文件转换成Byte类型; HttpContext.Current.Response.Clear(); l_strFileName = System.Web.HttpUtility.UrlEncode(l_strFileName); HttpContext.Current.Response.ContentType = "application/octet-stream" ; HttpContext.Current.Response.AppendHeader( "Content-Disposition" , "attachment;filename=" + l_strFileName); if (l_bytFileData.Length == 0) { l_bytFileData = System.Text.Encoding.Unicode.GetBytes( " " ); } HttpContext.Current.Response.BinaryWrite(l_bytFileData); HttpContext.Current.Response.Flush(); HttpContext.Current.Response.End(); |
response.Close、response.End、response.Flush区别(下载文件)的更多相关文章
- postman中 form-data、x-www-form-urlencoded、raw、binary的区别 && 下载文件
1.form-data: 就是http请求中的multipart/form-data,它会将表单的数据处理为一条消息,以标签为单元,用分隔符分开.既可以上传键值对,也可以上传文件.当上传的字段是文件 ...
- .Net 上传文件和下载文件
一.上传文件 1.普通的form表单提交 注意点: 请求方式必须为Post. form表单里必须设置enctype属性(enctype = "multipart/form-data" ...
- HTTP 下载文件工具类
ResponseUtils.java package javax.utils; import java.io.ByteArrayInputStream; import java.io.File; im ...
- winform 利用Http向服务器上传与下载文件
利用在服务器端的IIS,布置“请求处理映射”.从而处理,本地发出Post请求.Url指向web网站所在路径的请求映射.由映射代码实现服务器保存文件. winform里面使用,WebClient的对象, ...
- C# 指定物理目录下载文件,Response.End导致“正在中止线程”异常的问题
FileHandler http://www.cnblogs.com/vipsoft/p/3627709.html UpdatePanel无法导出下载文件: http://www.cnblogs.co ...
- JavaWeb学习记录(一)——response响应头之缓存设置与下载功能的实现
一.HTTP中常用响应头 Location: http://www.it315.org/index.jsp Server:apache tomcat Content-Encoding: gzip Co ...
- javaweb学习总结二十六(response对象的用法二 下载文件)
一:浏览器打开服务器上的文件 1:读取服务器上面的资源,如果在web层,可以直接使用servletContext,如果在非web层 可以使用类加载器读取文件 2:向浏览器写数据,实际上是把数据封装到r ...
- 多种下载文件方式 Response.BinaryWrite(byte[] DocContent);Response.WriteFile(System.IO.FileInfo DownloadFile .FullName);Response.Write(string html2Excel);
通过html给xls赋值,并下载xls文件 一.this.Response.Write(sw.ToString());System.IO.StringWriter sw = new System.IO ...
- JavaWeb下载文件response
以下代码在 chrome.firefox,安卓自带手机浏览器上测试通过,但未经过完全测试,先记录下 public static void downLoadFile(HttpServletRequest ...
随机推荐
- 剖析linux内核中的宏---------container_of
#define container_of(ptr, type, member) ({ \ const typeof(((type *)0)->member) * __mptr = (ptr); ...
- 201871010109-胡欢欢《面向对象程序设计(java)》第十三周学习总结
项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在哪里 https://www.cnblogs.com/nwnu-daizh/p ...
- 201871010135 张玉晶《面向对象程序设计(java)》第十六周学习总结
第一部分:总结教材14.1-14.3知识内容 并发 • 线程的概念 • 中断线程 • 线程状态 • 多线程调度 • 线程同步 一.线程的概念 1. 程序是一段静态的代码,它是应用程序执行的蓝本. 2. ...
- elipse常用插件下载
https://www.douban.com/note/142165105/ https://marketplace.eclipse.org/ http://maven.aliyun.com/nexu ...
- opencv旋转图像,90度标准旋转
摘自opencv 源代码 void rotate(InputArray _src, OutputArray _dst, int rotateMode) { CV_Assert(_src.dims() ...
- DES介绍
DES对称加密算法中的一种.是一个分组加密算法. 密钥长64位.(密钥事实上是56位参与DES运算(第8.16.24.32.40.48.56.64位是校验位)56 位 8位奇偶校验位. DES算 ...
- 字段加密实践(django-fernet-fields)
一.fernet介绍 Fernet 用于django模型字段对称加密,使用 crytography 库. 官网帮助文档 1.先决条件 django-fernet-fields 支持Django 1.8 ...
- 【转】使用Hibernate的好处是什么?
一.Hibernate是JDBC的轻量级的对象封装,它是一个独立的对象持久层框架,和App Server,和EJB没有什么必然的联系.Hibernate可以用在任何JDBC可以使用的场合,例如Java ...
- [LeetCode] 212. Word Search II 词语搜索之二
Given a 2D board and a list of words from the dictionary, find all words in the board. Each word mus ...
- windows 排查javaWeb程序占用CPU过高问题(可追踪到问题代码所在行)
1.情景展示 java虚拟机占用这么高的CPU,肯定不正常! 2.原因分析 第一个是tomcat,正在运行java项目: 第二个是eclipse,因为eclipse的运行依赖于java. 现在的问 ...