为了账号安全,请及时绑定邮箱和手机立即绑定

这段下载代码有什么问题吗

这段下载代码有什么问题吗

慕田峪9158850 2018-12-07 07:21:12
try { string filepath = context.Server.MapPath(context.Request.QueryString["filedir"].ToString() + "/" + context.Request.QueryString[0].Substring(0, 4).ToString() + "/" + context.Request.QueryString[0].ToString()); string filename = context.Request.QueryString[1].ToString(); FileInfo info = new FileInfo(filepath); long fileSize = info.Length; context.Response.Clear(); context.Response.ContentType = "application/x-zip-compressed"; context.Response.AddHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(filename, System.Text.Encoding.UTF8)); //不指明Content-Length用Flush的话不会显示下载进度 context.Response.AddHeader("Content-Length", fileSize.ToString()); context.Response.TransmitFile(filepath, 0, fileSize); context.Response.Flush(); context.Response.Close(); } catch { } 为什么会在99%时卡住,要等个几分钟才结束,也不是每次都这样,求指导,或者谁给个自己用的顺手的下载代码,谢谢。
查看完整描述

4 回答

?
一只甜甜圈

TA贡献1836条经验 获得超5个赞

在Catch中调试或者加日志记录,我怀疑有可能爆异常了 。TransmitFile这个方法拿来干什么的?
查看完整回答
反对 回复 2018-12-09
?
明月笑刀无情

TA贡献1828条经验 获得超4个赞

一楼正解,确定zip之后的文件长度一样?
查看完整回答
反对 回复 2018-12-09
?
UYOU

TA贡献1878条经验 获得超4个赞

你把  context.Response.Flush(); context.Response.Close(); 换成 context.Response.End();  
查看完整回答
反对 回复 2018-12-09
?
慕后森

TA贡献1802条经验 获得超5个赞

这个是把文件当做zip格式传递给客户端,和fileSize 大小有关吧,越大的文件时间越长
查看完整回答
反对 回复 2018-12-09
  • 4 回答
  • 0 关注
  • 348 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信