问题描述
代码如下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,要么是一个下载文件.