FileStream filestream = new FileStream( filepath,FileMode.Open,System.IO.FileAccess.Read, System.IO.FileShare.Read );
long filesize = filestream.Length;
//让客户端浏览器正确识别这个文件的类型和文件大小
string filename = System.IO.Path.GetFileName( filepath ).ToLower();
HttpContext.Current.Response.ContentType = "text/plain" ;// fileType ;// "application/octet-stream";
HttpContext.Current.Response.AddHeader("Content-Disposition","attachment; filename=\"" + HttpUtility.UrlEncode( filename,System.Text.Encoding.UTF8 ) + "\";");
HttpContext.Current.Response.AddHeader("Content-Length",filesize.ToString());
//将文件中的数据发送到客户端
byte[] filebuffer = new byte[filesize];
filestream.Read(filebuffer,0,(int)filesize);
HttpContext.Current.Response.BinaryWrite(filebuffer);
filestream.Close();
HttpContext.Current.Response.End();
点击下载时,客户端出现提示:您想打开或保存此文件吗?
点击[保存],正常;
但是点击[打开],会提示找不到文件[浏览器缓存地址],并问我要创建文件吗。
奇怪的是,同样的代码,在同样的服务器上,效果不同,我在asp.net创建了两个工程,
一个正常,另一个不正常。
恳请大家帮忙给解决一下,我无以回报,
以后我在论坛上遇到新手会多指导一下,作为对社会的回报吧
18 个解决方案
#1
友情up
#2
System.Text.Encoding.UTF8
编码错误
要用System.Text.Encoding.ASCII
编码错误
要用System.Text.Encoding.ASCII
#3
谢谢楼上的,不过用System.Text.Encoding.ASCII还是不行
#4
帖子不能沉啊
#5
up
#6
你还要让ContentType = xxxxxxx 我忘记了,就是设置HTTP流格式为文件传输格式,你去网上查下这个就好了
#7
谢谢楼上的,不过我已经设置了ContentType了
#8
HttpContext.Current.Response.AddHeader("Content-Length",filesize.ToString());
把这行代码去掉
把这行代码去掉
#9
谢谢楼上的,把这行代码去掉之后仍然不行
#10
最后自己解决了
#11
说说笑笑怎么解决的?
#12
帮LZ顶
#13
这通常是客户端的问题,由于浏览器无法操作自己缓存而造成的。
#14
自己解决的话,是否应该给自己分呢?
#15
友情up
#16
jf~~
#17
up
#18
不应该用HttpContext.Current.Response,而应该用this.page.Response
#1
友情up
#2
System.Text.Encoding.UTF8
编码错误
要用System.Text.Encoding.ASCII
编码错误
要用System.Text.Encoding.ASCII
#3
谢谢楼上的,不过用System.Text.Encoding.ASCII还是不行
#4
帖子不能沉啊
#5
up
#6
你还要让ContentType = xxxxxxx 我忘记了,就是设置HTTP流格式为文件传输格式,你去网上查下这个就好了
#7
谢谢楼上的,不过我已经设置了ContentType了
#8
HttpContext.Current.Response.AddHeader("Content-Length",filesize.ToString());
把这行代码去掉
把这行代码去掉
#9
谢谢楼上的,把这行代码去掉之后仍然不行
#10
最后自己解决了
#11
说说笑笑怎么解决的?
#12
帮LZ顶
#13
这通常是客户端的问题,由于浏览器无法操作自己缓存而造成的。
#14
自己解决的话,是否应该给自己分呢?
#15
友情up
#16
jf~~
#17
up
#18
不应该用HttpContext.Current.Response,而应该用this.page.Response