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 ...
随机推荐
- 201871010105-曹玉中《面向对象程序设计(java)》第十三周学习总结
201871010105-曹玉中<面向对象程序设计(java)>第十三周学习总结 项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ ...
- web-天下武功唯快不破
没有武术是不可摧毁的,而最快的速度是获得长期成功的唯一途径.>>>>>> ----你必须尽可能快地做到这一点!---- <<<<<&l ...
- mac pro下安装安装 SymPy 和 matplotlib报错解决方案
因为自己写python分析时候要用到这两个库,但是mac 上安装不成功.原来是要安装原来装 matplotlib 之前先要安装 freetyp 和 libpng. brew install freet ...
- uiautomator手动调试与快速高度设置
创建java工程:Demo1包名:com.bing.cn类名:Test测试用例:testDemo android create uitest-project -n Demo1 -t 7 -p E:\e ...
- day23_7.29 多态和类的内置方法
一.多态 在现实生活中,多态也会体现.如对于水这种物质,有固态:冰,液态:常态,气态:水蒸气, 在程序中,其官方定义是:多个不同对象可以相应同一方法,产生不同的结果. 而在python中,多态不是一个 ...
- luoguP3327 [SDOI2015]约数个数和
题意 首先有个结论: \(d(i,j)=\sum\limits_{x|i}\sum\limits_{y|j}[gcd(x,y)=1]\) 证明: 假设\(i=p_1^{a_1}*p_2^{a_2}*. ...
- 第09组 Beta冲刺(4/5)
队名:观光队 链接 组长博客 作业博客 组员实践情况 王耀鑫 过去两天完成了哪些任务 文字/口头描述 学习 展示GitHub当日代码/文档签入记录 无 接下来的计划 完成短租车,页面美化 还剩下哪些任 ...
- 强烈推荐一个和朋友远程桌面的软件teamviewer
强烈推荐一个和朋友远程桌面的软件teamviewer个人认为:贼溜
- Elasticsearch由浅入深(五)_version乐观锁、external version乐观锁、partial update、groovy脚本实现partial update
基于_version进行乐观锁并发控制 先构造一条数据出来 PUT /test_index/test_type/ { "test_field": "test test&q ...
- mysql Duplicate entry '9223372036854775807' for key 'PRIMARY'
mysql插入数据报错提示: ERROR 1062(23000) Duplicate entry '9223372036854775807' for key 'PRIMARY' 发现问题果断 直接 ...