先把有问题的代码贴出来吧, using System; using System.Data; using System.Configuration; using System.Collections; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls; using System.IO; namespace infoPlatClient.NetDisk { public partial class downLoad : Com.DRPENG.Common.WebStruct.BaseForm { ///
/// 取得要下载文件的路径 /// private string fileRpath { get { return Request["fileRpath"] == null ? "" : Request["fileRpath"]; } } ///
/// 取得要下载文件的名称 /// protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) this.DownloadFile(); } public void DownloadFile() { Response.ClearHeaders(); Response.Clear(); Response.Expires = 0; Response.Buffer =true; Response.AddHeader("Accept-Language", "zh-tw"); string name = System.IO.Path.GetFileName(fileRpath); System.IO.FileStream files = new FileStream(fileRpath, FileMode.Open, FileAccess.Read, FileShare.Read); byte[] byteFile=null; if (files.Length == 0) { byteFile=new byte[1]; } else { byteFile = new byte[files.Length]; } files.Read(byteFile, 0, (int)byteFile.Length); files.Close(); Response.AddHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(name, System.Text.Encoding.UTF8)); Response.ContentType = "application/octet-stream;charset=gbk"; Response.BinaryWrite(byteFile); Response.End(); } } } 之前一直用这种下载方式,可是有一次用户上传了一个700Mb的文件时报内存溢出的问题,分析了一下原因,用户的内存只有256M,而下载文件时要创建内存流,导致了内存溢出。 解决
:1>WriteFile分块下载,就是每次下载指定数量的多件; 2>通过超链接的方式; lblDownLoad.Text = "
下载" 下面是四种实现文件下载的方式: using System; using System.Data; using System.Configuration; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; 下载文档到电脑,查找使用更方便1下载券 0人已下载HYPERLINK"http://wenku.baidu.com/link?url=R6rYAZAr9pIt_BkfCeIlHWaBgaMgSO5Wx5Iz-WYMAdQB7NlFajAX5ks458gikirpv290mS5r4aPhzp96MQMYszJAqB_dxHp1pAGMT3Jsxje"\l"##"下载还剩2页未读,继续阅读fileName); Response.AddHeader("Content-Length", fileInfo.Length.ToString()); Response.AddHeader("Content-Transfer-Encoding", "binary"); Response.ContentType = "application/octet-stream"; Response.ContentEncoding = System.Text.Encoding.GetEncoding("gb2312"); Response.WriteFile(fileInfo.FullName); Response.Flush(); Response.End(); } //WriteFile分块下载 protected void Button3_Click(object sender, EventArgs e) { string fileName = "aaa.txt";//客户端保存的文件名 string filePath = Server.MapPath("DownLoad/aaa.txt");//路径 System.IO.FileInfo fileInfo = new System.IO.FileInfo(filePath); if (fileInfo.Exists == true) { const long ChunkSize = 102400;//100K 每次读取文件,只读取100K,这样可以缓解服务器的压力 byte[] buffer = new byte[ChunkSize]; Response.Clear(); System.IO.FileStream iStream = System.IO.File.OpenRead(filePath); long dataLengthToRead = iStream.Length;//获取下载的文件总大小 Response.ContentType = "application/octet-stream"; Response.AddHeader("Content-Disposition", "attachment; filename=" + HttpUtility.UrlEncode(fileName)); while (dataLengthToRead > 0 && Response.IsClientConnected) { int lengthRead = iStream.Read(buffer, 0, Convert.ToInt32(ChunkSize));//读取的大小 Response.OutputStream.Write(buffer, 0, lengthRead); Response.Flush(); dataLengthToRead = dataLengthToRead - lengthRead; } Response.Close(); } } //流方式下载 protected void Button4_Click(object sender, EventArgs e) { string fileName = "aaa.txt";//客户端保存的文件名 string filePath = Server.MapPath("DownLoad/aaa.txt");//路径 //以字符流的形式下载文件 FileStream fs = new FileStream(filePath, FileMode.Open); byte[] bytes = new byte[(int)fs.Length]; fs.Read(bytes, 0, bytes.Length); fs.Close(); Response.ContentType = "application/octet-stream"; //
浏览器下载文件而不是打开 Response.AddHeader("Content-Disposition", "attachment; filename=" + HttpUtility.UrlEncode(fileName, System.Text.Encoding.UTF8)); Response.BinaryWrite(bytes); Response.Flush(); Response.End(); } } 取得要下载文件的路径阅读已结束,如果下载本文需要使用1下载券HYPERLINK"http://wenku.baidu.com/link?url=R6rYAZAr9pIt_BkfCeIlHWaBgaMgSO5Wx5Iz-WYMAdQB7NlFajAX5ks458gikirpv290mS5r4aPhzp96MQMYszJAqB_dxHp1pAGMT3Jsxje"\l"##"下载想免费下载本文?HYPERLINK"javascript:;"立即加入VIPHYPERLINK"http://wenku.baidu.com/user/browse/vipprivilege/"\l"id2"\t"_blank"文档免下载券下载特权HYPERLINK"http://wenku.baidu.com/user/browse/vipprivilege/"\l"id3"\t"_blank"全站付费文档8折起HYPERLINK"http://wenku.baidu.com/user/browse/vipprivilege/"\l"id4"\t"_blank"千本精品电子
免费看HYPERLINK"http://wenku.baidu.com/view/6e0bf7d15fbfc77da269b1fe.html?re=view"下一篇把文档贴到Blog、BBS或个人站等:HYPERLINK"javascript:void(0);"复制HYPERLINK"javascript:void(0);"预览普通尺寸(450*500pix)较大尺寸(630*500pix)窗体顶端窗体底端你可能喜欢今日推荐146份文档HYPERLINK"http://wenku.baidu.com/xpage/interface/adclick?aid=7f81bceb19e8b8f67c1cb902&adurl=http%3A%2F%2Fwenku.baidu.com%2Ftopic%2F2015sjszgzks.html&source=http%3A%2F%2Fwenku.baidu.com%2Fview%2F4f54399b16fc700aba68fc0d.html&sig=a8419524f2e08b9979b69597edaab0ed"\o"2015上半年教师资格证考试"\t"_blank"2015上半年教师资格证考试HYPERLINK"http://wenku.baidu.com/view/dc33164443323968001c923e.html"\o"教师资格考试《幼儿教育学》模拟试题"\t"_blank"教师资格考试《幼儿教育学》模拟试题HYPERLINK"http://wenku.baidu.com/view/4b3f4bb36137ee06eff918a0.html"\o"2015教师资格《中学教育学》考前预测题及答案"\t"_blank"2015教师资格《中学教育学》考前预测题及答案HYPERLINK"http://wenku.baidu.com/view/b208fcb6d5bbfd0a78567346.html"\o"2015教资国考
综合素质高频考点"\t"_blank"2015教资国考小学综合素质高频考点216份文档HYPERLINK"http://wenku.baidu.com/xpage/interface/adclick?aid=1f26af45b307e87101f69602&adurl=http%3A%2F%2Fwenku.baidu.com%2Ftopic%2F2015quanguolianghui.html&source=http%3A%2F%2Fwenku.baidu.com%2Fview%2F4f54399b16fc700aba68fc0d.html&sig=f6d5bebf624fefab0b9fb49a605936f8"\o"2015全国两会专题"\t"_blank"2015全国两会专题HYPERLINK"http://wenku.baidu.com/view/5f584a5e4b73f242336c5f9e.html"\o"傅莹:“史上最严环保法”对污染表示“零容忍”"\t"_blank"傅莹:“史上最严环保法”对污染表示“零容忍”HYPERLINK"http://wenku.baidu.com/view/1e07cc1858fafab069dc028a.html"\o"俞正声作政协常委会工作报告"\t"_blank"俞正声作政协常委会工作报告HYPERLINK"http://wenku.baidu.com/view/c932490f168884868762d6a7.html"\o"环境治理成两会建言热门:宁要绿水青山"\t"_blank"环境治理成两会建言热门:宁要绿水青山89份文档HYPERLINK"http://wenku.baidu.com/xpage/interface/adclick?aid=676ea45177232f60ddcca102&adurl=http%3A%2F%2Fwww.xilu.com%2F%3Fczclac%3D654afb53cdb48581d9f31a8602c2d73f&source=http%3A%2F%2Fwenku.baidu.com%2Fview%2F4f54399b16fc700aba68fc0d.html&sig=419df0621385edf44ac9b628326eb105"\o"爆笑大撞脸"\t"_blank"爆笑大撞脸HYPERLINK"http://wenku.baidu.com/view/c79dec6ea98271fe910ef99b.html"\o"超爆笑笑话"\t"_blank"超爆笑笑话HYPERLINK"http://wenku.baidu.com/view/30cbdfa50029bd64783e2c25.html"\o"有趣及爆笑图片汇集"\t"_blank"有趣及爆笑图片汇集HYPERLINK"http://wenku.baidu.com/view/5084f8dfd15abe23482f4d0e.html"\o"绝对经典搞笑照片"\t"_blank"绝对经典搞笑照片您的评论*感谢支持,给文档评个星吧!240HYPERLINK"javascript:void(0);"发布评论HYPERLINK"javascript:void(0);"换一换用户评价评论加载中...暂无评论©2015 Baidu HYPERLINK"http://www.baidu.com/duty/"\t"_blank"使用百度前必读 | HYPERLINK"http://wenku.baidu.com/portal/browse/help"\l"help/20"\t"_blank"文库
| HYPERLINK"http://wenku.baidu.com/portal/browse/websitemap"\t"_blank"网站地图用手机扫此二维码:HYPERLINK"http://wenku.baidu.com/link?url=R6rYAZAr9pIt_BkfCeIlHWaBgaMgSO5Wx5Iz-WYMAdQB7NlFajAX5ks458gikirpv290mS5r4aPhzp96MQMYszJAqB_dxHp1pAGMT3Jsxje"\l"##"×*当前选择了字,最多支持70字。以下结果由提供:HYPERLINK"http://wenku.baidu.com/link?url=R6rYAZAr9pIt_BkfCeIlHWaBgaMgSO5Wx5Iz-WYMAdQB7NlFajAX5ks458gikirpv290mS5r4aPhzp96MQMYszJAqB_dxHp1pAGMT3Jsxje"\l"##"×HYPERLINK"http://fanyi.baidu.com/"\t"_blank"百度翻译百科词条:HYPERLINK"http://wenku.baidu.com/link?url=R6rYAZAr9pIt_BkfCeIlHWaBgaMgSO5Wx5Iz-WYMAdQB7NlFajAX5ks458gikirpv290mS5r4aPhzp96MQMYszJAqB_dxHp1pAGMT3Jsxje"\l"##"×HYPERLINK"http://baike.baidu.com/"\t"_blank"百度百科关闭窗体顶端搜试试3HYPERLINK"http://wenku.baidu.com/portal/browse/help"\t"_blank"帮助HYPERLINK"http://www.baidu.com/s?wd=word&fr=wenku"\t"_blank"去网页搜索全部DOCPPTTXTPDFXLS