http下载,通过文件流写到客户端,取消后再点击不再有反映???

xinxincao 2003-12-23 11:14:51
private void Button1_Click(object sender, System.EventArgs e)
{
Stream iStream = null;
string FilePath="f:/clips/Test/Test2.dll";
iStream = new FileStream(FilePath,FileMode.Open,FileAccess.Read,FileShare.Read);
Response.Clear();
Response.ContentType = "application/ms-download";
string FileName="下载速度测试";
Response.AddHeader("Content-Disposition", "attachment; filename=" + HttpUtility.UrlEncode(FileName,System.Text.Encoding.UTF8));
Response.AddHeader("Content-Length", iStream.Length.ToString());
Response.Flush();
int len=1;
while(len>0)
{
byte[] buffer=new Byte[65532];
len = iStream.Read(buffer,0,65532);
Response.OutputStream.Write(buffer,0,len);
Response.Flush();
}
}

我运行上面那段代码,只有在打了SP1的IE6上运行正常,其他版本的IE,都会出现下面的情况:
在选择文件路径的保存对话框中点取消,或在下载中途点取消后,再去点下载按钮,网页就死在那里。

请问问什么会出现这种情况,怎么解决?

buffer设成多大比较合适,用户反映下载速度太慢(是用来下载电影这样的大文件的),buffer是不是在服务器端开设的,如果设的太大,是不是用户稍稍一多,服务器就撑不住了?
...全文
65 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
xinxincao 2003-12-31
  • 打赏
  • 举报
回复
up
eagle_hb 2003-12-29
  • 打赏
  • 举报
回复
学习!
xinxincao 2003-12-24
  • 打赏
  • 举报
回复
up
xinxincao 2003-12-24
  • 打赏
  • 举报
回复
up
zsww 2003-12-23
  • 打赏
  • 举报
回复
学习!!!

-----------努力学习 不断实践 虚心讨教---------
速马 2003-12-23
  • 打赏
  • 举报
回复
while(len>0 && Response.IsClientConnected)

应该就不会死了
速马 2003-12-23
  • 打赏
  • 举报
回复
buffer当然是在服务端的
设大点试试...比如102400000
xinxincao 2003-12-23
  • 打赏
  • 举报
回复
我没在2003的ie6上测,不过在win2000的IE6(没打SP1的)不行,IE5或IE5。5也不行

最开始我也没有发现这个问题,后来在客户那里反馈来的信息,我一测确实是有问题

to Sunmast
感谢你对buffer的回答
bluecyclone 2003-12-23
  • 打赏
  • 举报
回复
顶!
速马 2003-12-23
  • 打赏
  • 举报
回复
是不是哦,我测试了没的问题的..(Win2K3 + IIS6.0)
buffer在服务器的内存中,每个下载连接开一个
不要设置的太大就行了
就算同时100个下载连接,buffer大小100k,使用内存也不过10M左右
xinxincao 2003-12-23
  • 打赏
  • 举报
回复
我最开始就是用Response.IsClientConnected做判断条件的,开始以为就是这句出了问题,后来专门写了这个小测试程序,发现问题一样,想知道问题出在哪?


buffer是在服务器端的内存中还是在服务器端的硬盘上,是每一个客户端的请求都从开设一个,还是有其他的分配原则?设的太大对服务器的没有影响?

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧