使文件下载的自定义连接支持 FlashGet 的断点续传多线程链接下载! C#/ASP.Net 实现

原创 2004年08月11日 08:50:00

using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;

public class WebForm1 : System.Web.UI.Page
{
 private void Page_Load(object sender, System.EventArgs e)
 {

  string s  = @"e:/northwind.mdb";
  s = @"I://SetupRes//Sun//j2re-1_4_2_05-windows-i586-p.exe";
  System.IO.Stream S = new System.IO.FileStream(s, System.IO.FileMode.Open, System.IO.FileAccess.Read,System.IO.FileShare.Read);

  long p = 0;

  long l = new System.IO.FileInfo(s).Length;

  if (Request.Headers["Range"] != null)
  {
   Response.StatusCode = 206;
   p = long.Parse( Request.Headers["Range"].Replace("bytes=","").Replace("-",""));
  }

  Response.AddHeader("Content-Length", ((long)(l - p)).ToString()  );

  if (p != 0)
  {
   //不是从最开始下载,
   //响应的格式是:
   //Content-Range: bytes [文件块的开始字节]-[文件的总大小 - 1]/[文件的总大小]
   Response.AddHeader("Content-Range","bytes " + p.ToString() + "-" + ((long)(l - p)).ToString() + "/" + l.ToString());
  }

  Response.ContentType = "application/octet-stream";    
  Response.AddHeader("Content-Disposition", "attachment; filename="  +  System.IO.Path.GetFileName(s));

  S.Position = p;

  int i = 1;
  byte[] b = new Byte[1024];
  while (i > 0)
  {
   i = S.Read(b, 0, b.Length);
   Response.OutputStream.Write(b, 0, i);
  }

  S.Close();
  Response.End();
 }
 #region Web 窗体设计器生成的代码
 override protected void OnInit(EventArgs e)
 {
  //
  // CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
  //
  InitializeComponent();
  base.OnInit(e);
 }
  
 ///


 /// 设计器支持所需的方法 - 不要使用代码编辑器修改
 /// 此方法的内容。
 ///

 private void InitializeComponent()
 {
  this.Load += new System.EventHandler(this.Page_Load);
 }
 #endregion
}

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

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

多线程下载文件和断点续传的简单实现

断点续传的要点: 每写入一次文件就将这次写入文件的位置保存起来(保存到文件中),下次读取文件的的位置开始下载public class MuchThreadDown { p...
  • wo_ha
  • wo_ha
  • 2016年07月24日 21:05
  • 2827

http协议多线程下载,支持断点续传(后续再完善)

#include #include #include #include #include #include #include #include #include #include /...
  • qq_35039122
  • qq_35039122
  • 2016年07月28日 00:09
  • 622

在Java中使用多线程结合断点续传实现一个简单的文件下载器

这篇博客介绍在android中使用多线程和断点续传实现一个简单的文件下载器 第一步:启动Tomcat服务器,将需要下载的文件部署到Tomcat服务器上 第二步:使用eclipse创建一个J...
  • u010105970
  • u010105970
  • 2016年04月23日 13:25
  • 1776

使文件下载的自定义连接支持 FlashGet 的断点续传多线程链接下载! JSP/Servlet 实现!

/*   文件名可存为: Download.jsp   HTTP 协议的请求与响应的会话过程可通过使用 FlashGet 下载 Http:// 连接的过程监视:   蓝色部分为: 客户端请求 ...
  • u010002783
  • u010002783
  • 2014年05月01日 22:06
  • 114

android 多文件多线程断点续传下载

今天跟大家一起分享下android开发中比较难的一个环节,可能很多人看到这个标题就会感觉头很大,的确如果没有良好的编码能力和逻辑思维,这块是很难搞明白的,前面2次总结中已经为大家分享过有关技术的一些基...
  • taa1007
  • taa1007
  • 2017年11月22日 19:06
  • 83

c++编写断点续传和多线程下载模块【转】

在当今的网络时代,下载软件是使用最为频繁的软件之一。几年来,下载技术也在不停地发展。最原始的下载功能仅仅是个“下载”过程,即从WEB服务器上连续地读取文件。其最大的问题是,由于网络的不稳定性,一旦连接...
  • zhang_sinner
  • zhang_sinner
  • 2015年07月28日 23:02
  • 2020

Java代码实现多线程下载和断点续传

- 多线程下载原理 客户端要下载一个文件, 首先请求服务器,服务器将这个文件传送给客户端,客户端保存到本地, 完成了一个下载的过程. 多线程下载的思想是客户端开启多个线程同时下载,每个线程只负责下载文...
  • qq_32101859
  • qq_32101859
  • 2016年11月15日 21:10
  • 4730

使用xUtils框架实现多线程下载和断点续传

在前面的博客中分别介绍了在Java中实现多线程下载和断点续传以及在android中实现多线程下载和断点续传,这篇博客将介绍使用第三方框架xUtils实现多线程下载和断点续传 首先看一下实现的效果,点...
  • u010105970
  • u010105970
  • 2016年04月23日 17:26
  • 2791

用 C# 实现 HTTP 协议多线程下载文件

本文内容 环境Internet 请求演示参考资料修改记录   环境 开发工具:VS 2010/.NET Framework 4.0系统环境:Microsoft Windows 7   I...
  • u013814389
  • u013814389
  • 2015年09月28日 11:28
  • 1436
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:使文件下载的自定义连接支持 FlashGet 的断点续传多线程链接下载! C#/ASP.Net 实现
举报原因:
原因补充:

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