多线程 断点续传

简介:

 

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
        {
            //如果用户断开连接 防止无限循环
            1catch Exception "Error : " finally
if null

}

本文转自曾祥展博客园博客,原文链接:http://www.cnblogs.com/zengxiangzhan/archive/2010/01/30/1659983.html,如需转载请自行联系原作者



相关文章
|
5月前
|
Java
java多线程分片下载文件
java多线程分片下载文件
|
7月前
|
存储 前端开发 C#
如何实现文件断点续传功能
相信大家都使用过迅雷、电驴、百度云网盘等一类的工具,所有这些支持上传或下载的工具都有一个功能,那就是断点续传,也就是在你网络不佳传输断开时,传输会暂停,在网络恢复后,可以继续传输,从而避免数据的重复上传,以减少网络流量,提高效率。那么,你有仔细想过这其中的实现原理嘛?
|
网络协议 算法 Java
撸了个多线程断点续传下载器,我从中学习到了这些知识
撸了个多线程断点续传下载器,我从中学习到了这些知识
148 0
撸了个多线程断点续传下载器,我从中学习到了这些知识
|
网络协议 Java
文件断点续传原理与实现
在网络状况不好的情况下,对于文件的传输,我们希望能够支持可以每次传部分数据。首先从文件传输协议FTP和TFTP开始分析, FTP是基于TCP的,一般情况下建立两个连接,一个负责指令,一个负责数据;而TFTP是基于UDP的,由于UDP传输是不可靠的,虽然传输速度很快,但对于普通的文件像PDF这种,少了一个字节都不行。
2423 0
|
缓存 C# 图形学
C#多线程下载、断点续传的实现
做Unity热更功能的时候,发现单线程下载大尺寸资源文件的效率太低,专门去研究了下多线程下载,这里记录下相关知识点。
|
缓存 网络协议 程序员