使用Response.BinaryWrite()后,Response.Write()失效

问题描述

代码如下try{Response.ClearHeaders();Response.Clear();Response.Expires=0;Response.Buffer=true;Response.AddHeader("Accept-Language","zh-cn");stringname=System.IO.Path.GetFileName(_filename);System.IO.FileStreamfiles=newFileStream(_filename,FileMode.Open,FileAccess.Read,FileShare.Read);byte[]byteFile=null;if(files.Length==0){byteFile=newbyte[1];}else{byteFile=newbyte[files.Length];}files.Read(byteFile,0,(int)byteFile.Length);files.Close();Response.AddHeader("Content-Disposition","attachment;filename="+HttpUtility.UrlEncode(name,System.Text.Encoding.UTF8));Response.ContentType="application/octet-stream;charset=gbk";Response.BinaryWrite(byteFile);}catch(Exceptionex){Response.Write("下载文件出错:"+ex.Message);Response.End();}Response.Write("生成成功!");文件能成功生成,但是最后这句"生成成功!"则不会输出,求解原因。

解决方案

本帖最后由 kj86345580 于 2015-05-15 15:37:15 编辑
解决方案二:
你都告诉IIS了这个页面以stream输出了,怎么可能再以string输出呢。。
解决方案三:
把"生成成功"转成byte[],仍然可使用BinaryWrite
解决方案四:
引用1楼wyd1520的回复:

你都告诉IIS了这个页面以stream输出了,怎么可能再以string输出呢。。

我哪句代码改成stream输出了???是这个Response.ContentType="application/octet-stream;charset=gbk";么?
解决方案五:
引用3楼kj86345580的回复:

Quote: 引用1楼wyd1520的回复:
你都告诉IIS了这个页面以stream输出了,怎么可能再以string输出呢。。

我哪句代码改成stream输出了???是这个Response.ContentType="application/octet-stream;charset=gbk";么?

是地。还有Response.BinaryWrite(byteFile);不能与Write混着用。
解决方案六:
引用1楼wyd1520的回复:

你都告诉IIS了这个页面以stream输出了,怎么可能再以string输出呢。。

那要实现我想要的那个效果应该怎么做呢?
解决方案七:
引用2楼tcmakebest的回复:

把"生成成功"转成byte[],仍然可使用BinaryWrite

没有用,页面上还是什么都没显示
解决方案八:
没得显示。这个没招
解决方案九:
引用6楼kj86345580的回复:

Quote: 引用2楼tcmakebest的回复:
把"生成成功"转成byte[],仍然可使用BinaryWrite

没有用,页面上还是什么都没显示

晕,这不应该在下载文件的末尾吗,根本就不会在页面中.
解决方案十:
引用8楼tcmakebest的回复:

Quote: 引用6楼kj86345580的回复:
Quote: 引用2楼tcmakebest的回复:
把"生成成功"转成byte[],仍然可使用BinaryWrite

没有用,页面上还是什么都没显示

晕,这不应该在下载文件的末尾吗,根本就不会在页面中.

不是的~想等文件开始下载后,再在页面显示一个生成成功,貌似不能通过后台这个干,你有什么方法么~
解决方案十一:
引用7楼wyd1520的回复:

没得显示。这个没招

解决方案十二:
从浏览器向后台请求下载,不可能是楼主想的,即下载了文件,又可以搭便车返回一个"成功"的提示.一次请求只有一个结果,要么是这个页面的HTML,要么是一个下载文件.

时间: 2024-12-04 03:36:02

使用Response.BinaryWrite()后,Response.Write()失效的相关文章

response.binarywrite与response.writebinary区别?

问题描述 response.binarywrite与response.writebinary区别? 解决方案 解决方案二:帮顶解决方案三:查了msdnHttpResponse.BinaryWrite方法将一个二进制字符串写入HTTP输出流.WriteBinary只有下面帮助ISCardISO7816::WriteBinary要不然楼主错了,要不然我装的不全解决方案四:学习

文件操作-ASP.NET对称解密后Response文件流下载

问题描述 ASP.NET对称解密后Response文件流下载 一个AES对称加密压缩文件用AES解密后使用MemoryStream内存文件流存放后转换为byte[]字节流数组使用Response文件流输出方式输出.压缩文件打开的时候提示文件流出错,内容一样可以查看说明解密成功了.使用FileStream保存文件无任何异常. ` 解决方案 http://www.cnblogs.com/chaoa/archive/2012/03/09/2386106.html

网站-发布到远程服务器后,LinkButton失效

问题描述 发布到远程服务器后,LinkButton失效 用asp.net写的网站,在本机测试并发布在本机后,在本机或者其他机子访问,LinkButton都可以正常点击,gridview自带的分页点击也可以正常分页. 但是发布到远程主机后,在本机访问或者其它机子(同一个浏览器),所有的LinkButton失效,gridview自带的分页链接点击也失效.

360杀毒软件安装后广告屏蔽失效怎么办

  很多用户反映,在安装了360杀毒软件后,发现360极速浏览器无法正常对网页中的广告进行屏蔽了,这令很多人都很苦恼.那么, 对于该问题是什么原因造成的呢?下面看小编为大家带来360杀毒软件安装后广告屏蔽失效解决办法. 原因分析: 通常出现该问题时的用户,电脑中都会同时安装有360极速浏览器与360杀毒软件两款软件; 造成该问题的出现时因为用户在安装360杀毒软件后,360浏览器默认会开启[与360安全卫士的弹窗拦截设置保持一致],故此造成无法屏蔽网页中的页面广告,我们只需要将该选项关闭即可;

中英文混排-Textview重写后ellipsize属性失效

问题描述 Textview重写后ellipsize属性失效 最近遇到textview内容中英文符号混排,重写自定义textview绘制后不会提前换行了,但是不显示全部省略号ellipsize属性不起作用,不管是xml还是代码写都看不见省略号了,希望有经验的人能给出更好地解决办法 解决方案 省略号也要自己绘制,所以你要改写你的自定义组件,判断文字宽度是否快达到右侧边缘了,然后加上省略号 解决方案二: TextView中ellipsize属性TextView中ellipsize属性TextView中

急急急!在ie浏览器下,引入java包并从数据库获取数据后css文件失效了

问题描述 急急急!在ie浏览器下,引入java包并从数据库获取数据后css文件失效了 同一个css文件,在360安全浏览器急速模式或360急速浏览器急速模式(总之是非兼容模式)下显示正常是我要的样式,但在ie浏览器,以及兼容模式下显示不出正常,但还不是完全显示不正常,我发现只有引入了java包并有jsp语句的jsp页面css失效了.貌似是jsp语句影响了css样式?求解决方案,急急急~! 解决方案 你写的css不兼容ie吧,急速模式用的webkit,兼容模式是ie 解决方案二: 但是,像text

jasperreport-使用ireport生成pdf后字体大小失效

问题描述 使用ireport生成pdf后字体大小失效 在ireport中编辑了一个报表模板,编译成.jasper文件后在项目中生成报表文件,但是渲染后的报表文件中的字体大小全部失效,其他均正常.请大神不吝指点.以下几点是小弟调查过后已经做过的.1. 已经将itextAsian加入到ireport的classpath中.2. 所需字体也已导入到ireport以及项目中. 多谢! 解决方案 ireport不清楚 我用finereport,目前在finereport设计器中能够选择的字体是系统安装的字

java-项目运行一段时间后session数据失效问题

问题描述 项目运行一段时间后session数据失效问题 最近struts2+spring做开发,项目启动后登陆操作一切正常,一天后再登陆后操作session里的数据老是失效不存在,但是页面又显示正常, 纠结了很久找不到原因,还请大神们帮忙看下. 获取session数据是用struts2的方法,代码如下,服务器是用的jboss7 HttpServletRequest request = ServletActionContext.getRequest(); HttpSession session =

thinkvantage-thinkpad t410 安装ubuntu后,ThinkVantage失效

问题描述 thinkpad t410 安装ubuntu后,ThinkVantage失效 thinkpad t410 安装ubuntu后 想使用ThinkVantage还原windows 7 发现无法使用 求解如何恢复.