分块下载,测试文件 3.8GB

protected void Page_Load(object sender, EventArgs e)
    {
        string downFilePath = @"D:\openSUSE-10.2-GM-DVD-i386.iso"; // test with 3.8GB, ok // Server.MapPath("~/files/somefile.iso");
        System.IO.FileInfo downFileInfo = new System.IO.FileInfo(downFilePath);

        if (!downFileInfo.Exists) throw new Exception("文件不存在。");
        const int CHUNK_SIZE = 10000;
        byte[] buffer = new byte[CHUNK_SIZE];

        Response.Clear();
        using (System.IO.FileStream iStream = System.IO.File.OpenRead(downFilePath)) {
            long dataLengthToRead = iStream.Length;
            Response.ContentType = "application/octet-stream";
            Response.AddHeader("Content-Disposition",
                               "attachment; filename=" + Server.UrlPathEncode(downFileInfo.Name));
            while (dataLengthToRead > 0 && Response.IsClientConnected) {
                int lengthRead = iStream.Read(buffer, 0, CHUNK_SIZE);
                Response.OutputStream.Write(buffer, 0, lengthRead);
                Response.Flush();
                dataLengthToRead = dataLengthToRead - lengthRead;
            }
        }
         }

 


 

Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1686797

posted @ 2008-06-17 13:40  my favorite  阅读(242)  评论(0编辑  收藏  举报