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下载

解决方案 »

  1.   

    Refer:
    http://www.cnblogs.com/insus/articles/2002489.html
    http://www.cnblogs.com/insus/archive/2012/08/09/2629920.html
      

  2.   

    大文件的上传下载。可以采用Flash 或者 使用ocx 实现。Http 请求的方式,第一是慢,第二 有文件大小限制。老虎传送门
      

  3.   

    文件是已经存在的对吧?
    你不能直接跳转吗?
    比如这样子 
     Response.Redirect("http://127.0.0.1/aaa.rar");
      

  4.   

    if (file.Exists == true)
            {
                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();
            }