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我感觉多余但是也是可行的
此文是自己总结,如有错误还望高手指出,大家共同学习
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区别的更多相关文章
- response常见应用、response细节、输出随机图片、定时刷新网页
response常见应用 向客户端输出中文数据 分别以OutputStream和PrintWriter输出 多学一招:使用HTML语言里面的<meta>标签来控制浏览器行为 思考:用O ...
- PHP的ob_flush()与flush()区别
PHP的ob_flush()与flush()区别 标签: php ob-flush flush buffer 2017年03月24日 17:50:393248人阅读 评论(0) 收藏 举报 分类: ...
- response.Close、response.End、response.Flush区别(下载文件)
今天在做文件下载功能用到的是response的方法,首先我们要了解这些方法的作用. 1.response.write():将信息写入http响应输出流. 2.response.Flush:向客户端发送 ...
- response.redirect 与location.href 的区别
最近做项目时发现,先弹出提示框,再跳转页面 这样写:Jscript.Alert("你好,Hello!"); Response.Redirect("/index.aspx& ...
- response.sendRedirect()与request.getRequestDispatcher().forward()区别
Servlet中response.sendRedirect()与request.getRequestDispatcher().forward(request,response)这两个对象都可以使页面跳 ...
- 关于Response.Redirect和Server.Execute的区别
Server.Transfer("path")内部重定向请求,是服务器内部的接管,浏览器无法意识到这个接管的发生,浏览器地址栏也不会发生变化.而Response.Redirect( ...
- 转response.sendRedirect()与request.getRequestDispatcher().forward()区别
JSP中response.sendRedirect()与request.getRequestDispatcher().forward(request,response)这两个对象都可以使页面跳转,但是 ...
- 让你明白response.sendRedirect()与request.getRequestDispatcher().forward()区别
JSP中response.sendRedirect()与request.getRequestDispatcher().forward(request,response)这两个对象都可以使页面跳转,但是 ...
- response.sendRedirect(location)与rd.forward()区别
在Java Web开发中,经常会用到跳转页面的方法,一般有下面两种方法. HttpServletResponse response = new HttpServletResponse(); respo ...
随机推荐
- (转)Shell——基本运算符
Shell 基本运算符 原文:http://blog.csdn.net/sinat_36053757/article/details/70319481 Shell 和其他编程语言一样,支持多种运算符, ...
- sqlplus连接oracle语法
sqlplus文件在product\11.2.0\dbhome_1\BIN目录下. 连接语法:用户名/密码@ip/服务名
- 详细讲解Android的网络通信(HttpUrlConnection和HttpClient)
前言,Android的网络通信的方式有两种:使用Socket或者HTTP,今天这一篇我们详细讲解使用HTTP实现的网络通信,HTTP又包括两种方式编程方式: (1)HttpUrlConnection: ...
- 牛客网Java刷题知识点之为什么HashMap和HashSet区别
不多说,直接上干货! HashMap 和 HashSet的区别是Java面试中最常被问到的问题.如果没有涉及到Collection框架以及多线程的面试,可以说是不完整.而Collection框架的 ...
- 018-面向接口编程的BeanFactory模板代码
1 BeanFactory工具类 package www.test.utils; import org.dom4j.Document; import org.dom4j.Element; import ...
- 关于GitHub在VS中出现“已经存在master版本,无法……”的错误解决方案
引用:http://www.cnblogs.com/SmallZL/p/3637613.html(这篇已经很详细说明如何使用Vs+GitHub),我这里做补充: VS2013已经集成了Git一部分控件 ...
- 通过TLS回调函数的反调试
下面是TLS数据结构的定义 typedef struct _IMAGE_TLS_DIRECTORY { DWORD StartAddressOfRawData; DWORD EndAddressOfR ...
- 解决引入外部文件(图片、js等)出现 403 net::ERR_ABORTED 的问题
页面中引入外网的链接资源,会产生一个新的http请求.为了安全(URL里可能包含用户信息),浏览器一般都会给这写请求头加上表示来源的referrer 字段. 所以,此时我们需要隐藏外部链接中的refe ...
- 数据挖掘:基于Spark+HanLP实现影视评论关键词抽取(1)
1. 背景 近日项目要求基于爬取的影视评论信息,抽取影视的关键字信息.考虑到影视评论数据量较大,因此采用Spark处理框架.关键词提取的处理主要包含分词+算法抽取两部分.目前分词工具包较为主流的,包括 ...
- CF 303C——Minimum Modular——————【剪枝】
Minimum Modular time limit per test 2 seconds memory limit per test 256 megabytes input standard inp ...