if (file.Exists)
{
Response.Clear();
Response.AddHeader("Content-Disposition", "attachment;filename=" + Server.UrlEncode(file.Name));
Response.AddHeader("Content-Length", file.Length.ToString());
Response.ContentType = "application/octet-stream; charset=gb2312";
Response.Filter.Close();
Response.WriteFile(file.FullName);
Response.End();
}下载代码如上,文件地址是从数据库得到的,用这个下载300M左右的文件就会需要等一段时间才会弹出IE的文件下载框,如果文件大于1G以上的话那就要等很长的时间导致页面加载失败,大家有没有遇到这种情况没?或许提供一个更加高效的方法。。.net下载
http://www.cnblogs.com/insus/articles/2002489.html
http://www.cnblogs.com/insus/archive/2012/08/09/2629920.html
你不能直接跳转吗?
比如这样子
Response.Redirect("http://127.0.0.1/aaa.rar");
{
const long ChunkSize = 102400;//100K 每次读取文件,只读取100K,这样可以缓解服务器的压力
byte[] buffer = new byte[ChunkSize];
Response.Clear();
System.IO.FileStream iStream = System.IO.File.OpenRead(path);
long dataLengthToRead = iStream.Length;//获取下载的文件总大小
Response.ContentType = "application/octet-stream";
Response.AddHeader("Content-Disposition", "attachment; filename=" + HttpUtility.UrlEncode(file.Name));
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();
}