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

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%时卡住,要等个几分钟才结束,也不是每次都这样,求指导,或者谁给个自己用的顺手的下载代码,谢谢。
慕田峪9158850
浏览 349回答 4
4回答

一只甜甜圈

在Catch中调试或者加日志记录,我怀疑有可能爆异常了 。TransmitFile这个方法拿来干什么的?

明月笑刀无情

一楼正解,确定zip之后的文件长度一样?

UYOU

你把  context.Response.Flush(); context.Response.Close(); 换成 context.Response.End();  

慕后森

这个是把文件当做zip格式传递给客户端,和fileSize 大小有关吧,越大的文件时间越长
打开App,查看更多内容
随时随地看视频慕课网APP