开发者社区> 橘子红了呐> 正文

多线程 断点续传

简介:
+关注继续查看

Stream iStream = null;
byte[] buffer = new Byte[10240];// 缓冲区块10K bytes :
int length;            
long dataToRead;           
string filepath = @"E:\software\SQL Server 2000 Personal Edition.ISO";
string filename = System.IO.Path.GetFileName(filepath);
try
{
    // 打开文件
    iStream = new FileStream(filepath, FileMode.Open,FileAccess.Read, FileShare.Read);
    Response.Clear();
    dataToRead = iStream.Length;
    long p = 0;
    if (Request.Headers["Range"] != null)
    {
        Response.StatusCode = 206;
        p = long.Parse(Request.Headers["Range"].Replace("bytes=", "").Replace("-", ""));
    }
    if (p != 0)
    {
        Response.AddHeader("Content-Range", "bytes " + p.ToString() + "-" + ((long)(dataToRead - 1)).ToString() + "/" + dataToRead.ToString());
    }
    Response.AddHeader("Content-Length", ((long)(dataToRead - p)).ToString());
    Response.ContentType = "application/octet-stream";
    Response.AddHeader("Content-Disposition", "attachment; filename=" + System.Web.HttpUtility.UrlEncode(Request.ContentEncoding.GetBytes(filename)));

    iStream.Position = p;
    dataToRead = dataToRead - p;              
    while (dataToRead > 0)
    {                  
        if (Response.IsClientConnected)
        {               
            length = iStream.Read(buffer, 0, 10240);                     
            Response.OutputStream.Write(buffer, 0, length);                      
            Response.Flush();

            buffer = new Byte[10240];
            dataToRead = dataToRead - length;
        }
        else
        {
            //如果用户断开连接 防止无限循环
            dataToRead = -1;
        }
    }
}
catch (Exception ex)
{             
    Response.Write("Error : " + ex.Message);
}
finally
{
    if (iStream != null)
    {
        iStream.Close();
    }
    Response.End();
}
}


,如需转载请自行联系原作者

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
java多线程分片下载文件
java多线程分片下载文件
47 0
多线程详解p4网图下载
多线程详解p4网图下载
18 0
撸了个多线程断点续传下载器,我从中学习到了这些知识
撸了个多线程断点续传下载器,我从中学习到了这些知识
76 0
多线程-3(同步)
SemaphoreSlim类 代码:
77 0
C#多线程下载、断点续传的实现
做Unity热更功能的时候,发现单线程下载大尺寸资源文件的效率太低,专门去研究了下多线程下载,这里记录下相关知识点。
555 0
多线程断点下载文件
package cn.itcast.download; import java.io.File; import java.io.InputStream; import java.io.RandomAccessFile; import java.net.HttpURLConnection; import java.net.URL; public class MulThreadDownloa
1300 0
文章
问答
文章排行榜
最热
最新
相关电子书
更多
多线程
立即下载
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载