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%时卡住,要等个几分钟才结束,也不是每次都这样,求指导,或者谁给个自己用的顺手的下载代码,谢谢。
你把
context.Response.Flush();
context.Response.Close();
换成
context.Response.End();
如果换成
context.Response.End(); 我敢保证,这段代码每次都会执行catch
建议这样试一下
@小AI: 要保留这个
context.Response.Flush();
@Yu: 试试这个
http://support.microsoft.com/kb/812406/zh-cn
这个是把文件当做zip格式传递给客户端,和fileSize 大小有关吧,越大的文件时间越长
在Catch中调试或者加日志记录,我怀疑有可能爆异常了 。TransmitFile这个方法拿来干什么的?