这个问题很久之前就有人问过了,最近又有人问到,就把它放在我的blog里
一般下载文件都会用Response.WriteFile(FullName)
这样会造成 Aspnet_wp.exe 暂存了太大空间而导致下载失败,建议采用stream方式下载
这个问题很久之前就有人问过了,最近又有人问到,就把它放在我的blog里
一般下载文件都会用Response.WriteFile(FullName)
这样会造成 Aspnet_wp.exe 暂存了太大空间而导致下载失败,建议采用stream方式下载
asp.net(c#)
部分程序
System.IO.Stream iStream = null;//以10K为单位暂存:
byte[] buffer = new Byte[10000];
int length;
long dataToRead;
// 制定文档路径.
string filepath = Server.MapPath("~/aaa.rar");
// 得到文档名.
string filename = System.IO.Path.GetFileName(filepath);
try
...{
// 打开文档.
iStream = new System.IO.FileStream(filepath, System.IO.FileMode.Open,
System.IO.FileAccess.Read, System.IO.FileShare.Read);
// 得到文档大小:
dataToRead = iStream.Length;
Response.ContentType = "application/x-rar-compressed";
Response.AddHeader("Content-Disposition", "attachment; filename=" + HttpUtility.UrlEncode(filename));
while (dataToRead > 0)
...{
//保证client连接
if (Response.IsClientConnected)
...{
length = iStream.Read(buffer, 0, 10000);
Response.OutputStream.Write(buffer, 0, length);
Response.Flush();
buffer = new Byte[10000];
dataToRead = dataToRead - length;
}
else
...{
//结束循环
dataToRead = -1;
}
}
}
catch (Exception ex)
...{
// error
Response.Write("Error : " + ex.Message);
}
finally
...{
if (iStream != null)
...{
//关闭文档
iStream.Close();
}
}
参考网址:
http://www.blueshop.com.tw/board/show.asp?subcde=BRD200706131110357NX&fumcde=
http://www.blueshop.com.tw/board/show.asp?subcde=BRD20080506151701ZMH&fumcde=FUM20041006161839LRJ
原文:大专栏 ASP.NET解决网页下载文件过大的问题,使用stream方式下载