Asp.net(c#)实现多线程断点续传

转载 2007年10月12日 15:09:00
 Asp.net(c#)实现多线程断点续传     CSDN Blog推出文章指数概念,文章指数是对Blog文章综合评分后推算出的,综合评分项分别是该文章的点击量,回复次数,被网摘收录数量,文章长度和文章类型;满分100,每月更新一次。

http://www.cnblogs.com/bestcomy/archive/2004/08/10/31950.html

以前一直错误的认为在ASP.NET中无法通过编程方式实现多线程断点续传,今天终于获得了这样一个解决方案,让我明白要学习的东西还很多
此解决方案基于其它解决方案及相关资料,根据我自己的理解改进.如有错漏,请尽管指出;如有其它更好的解决方案,请推荐一下,感谢先。

System.IO.Stream iStream = null;

            
// Buffer to read 10K bytes in chunk:
            byte[] buffer = new Byte[10240];

            
// Length of the file:
            int length;

            
// Total bytes to read:
            long dataToRead;

            
// Identify the file to download including its path.
            string filepath  = @"E:/software/SQL Server 2000 Personal Edition.ISO";

            
// Identify the file name.
            string  filename  = System.IO.Path.GetFileName(filepath);

            
try
            
{
                
// Open the file.
                iStream = new System.IO.FileStream(filepath, System.IO.FileMode.Open, 
                    System.IO.FileAccess.Read,System.IO.FileShare.Read);
                Response.Clear();

                
// Total bytes to read:
                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;
                
// Read the bytes.
                while (dataToRead > 0)
                
{
                    
// Verify that the client is connected.
                    if (Response.IsClientConnected) 
                    
{
                        
// Read the data in buffer.
                        length = iStream.Read(buffer, 010240);

                        
// Write the data to the current output stream.
                        Response.OutputStream.Write(buffer, 0, length);

                        
// Flush the data to the HTML output.
                        Response.Flush();

                        buffer
= new Byte[10240];
                        dataToRead 
= dataToRead - length;
                    }

                    
else
                    
{
                        
//prevent infinite loop if user disconnects
                        dataToRead = -1;
                    }

                }

            }

            
catch (Exception ex) 
            
{
                
// Trap the error, if any.
                Response.Write("Error : " + ex.Message);
            }

            
finally
            
{
                
if (iStream != null
                
{
                    
//Close the file.
                    iStream.Close();
                }
                   Response.End();
            }

Asp.net(c#)实现多线程断点续传下载大文件

/// /// 下载的方法 /// /// 下载文件的路径 public void Reget(string filepath) ...
  • sy125603147
  • sy125603147
  • 2012-05-11 11:57:54
  • 1799

C#用HTTP协议实现多线程文件下载和断点续传

(1) 多线程文件下载的总体思路是:把一个下载任务分配给多个线程,首先获取文件的长度,平分给多个线程,每个线程负责指定的文件块,待全部线程完成后,再把各个线程下载的临时文件合并。...
  • q626779313
  • q626779313
  • 2014-05-18 16:40:42
  • 2904

.Net/C#: 实现支持断点续传多线程下载的 Http Web 客户端工具类 (第2版) (C# DIY HttpWebClient)

/* .Net/C#: 实现支持断点续传多线程下载的 Http Web 客户端工具类 (C# DIY HttpWebClient)  * Reflector 了一下 System.Net.WebCli...
  • jelink
  • jelink
  • 2006-11-05 14:52:00
  • 1390

C#: 实现支持断点续传多线程下载的

  /* .Net/C#: 实现支持断点续传多线程下载的 Http Web 客户端工具类 (C# DIY HttpWebClien...
  • vrix
  • vrix
  • 2006-07-28 18:37:00
  • 1226

多线程断点

  • 2012年10月17日 15:06
  • 24KB
  • 下载

C#.Net: 实现支持断点续传多线程下载的 Http Web 客户端工具类

最近因为客户需要软件在线更新,我就在寻找从网上download的方法。虽然网上资源挺多的,但是,很多不适合。不过这个类 还是很不错的,介绍给大家。/**//* .Net/C#: 实现支持断点续传多线程...
  • begtostudy
  • begtostudy
  • 2008-03-06 21:09:00
  • 3685

C#做的小巧Web服务器,支持多线程和断点续传

  • 2007年11月23日 18:54
  • 16KB
  • 下载

C# Http多线程下载、断点续传

查了下资料,Http断点续传主要是Http请求包中的Range头 多线程下载需要管理好每一个线程下载的文件段 整个代码大致如下 using System; usin...
  • a331365046
  • a331365046
  • 2015-03-26 17:39:42
  • 383

一个多线程断点续传的案例

文件下载在App应用中也用到很多,一般版本更新时多要用的文件下载来进行处理,以前也有看过很多大神有过该方面的博客,今天我也自己来实践一下,写的一般,还请大家多提意见,共同进步。 - 实现的原理 文...
  • Tangi1910
  • Tangi1910
  • 2017-05-27 18:17:08
  • 315

c#多线程断点续传

  • 2014年12月22日 15:40
  • 59KB
  • 下载
收藏助手
不良信息举报
您举报文章:Asp.net(c#)实现多线程断点续传
举报原因:
原因补充:

(最多只允许输入30个字)