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

asp.net|多线程|链接|下载

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
}

 

时间: 2025-01-20 20:47:56

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

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

client|web|多线程|客户端|下载 /* .Net/C#: 实现支持断点续传多线程下载的 Http Web 客户端工具类 (C# DIY HttpWebClient) * Reflector 了一下 System.Net.WebClient ,重载或增加了若干: * DownLoad.Upload 相关方法! * DownLoad 相关改动较大! * 增加了 DataReceive.ExceptionOccurrs 事件! * 了解服务器端与客户端交互的 HTTP 协议参阅: * 使文件

C#实现支持断点续传多线程下载客户端工具类_实用技巧

复制代码 代码如下: /* .Net/C#: 实现支持断点续传多线程下载的 Http Web 客户端工具类 (C# DIY HttpWebClient) * Reflector 了一下 System.Net.WebClient ,改写或增加了若干: * DownLoad.Upload 相关方法! * DownLoad 相关改动较大! * 增加了 DataReceive.ExceptionOccurrs 事件! * 了解服务器端与客户端交互的 HTTP 协议参阅: * 使文件下载的自定义连接支持

html5-JS-SDK如何实现自定义连接?

问题描述 JS-SDK如何实现自定义连接? 微信官方文档我看过了,有几个问题wx.config方法里timestamp(生成签名的时间戳 ),nonceStr(生成签名的随机串)这2个参数应该如何填写,还有"公众号设置">"功能设置"里填写"JS接口安全域名". 这个JS借口安全域名是什么意思 如何去填写? 解决方案 timestamp(生成签名的时间戳), 这个直接用 time()函数设置就可以了 nonceStr(生成签名的随机串)这2

新iNet软件使微软.Net服务能够支持Java

微软 新iNet软件使微软.Net服务能够支持Java(2002.01.28)   来自:赛迪    近日,Halcyon公司声称,将发布Instant .Net(iNet)的第一个测试版,这是专为微软的Visual Studio .Net开发者软件设计的插件.它把基于XML的.Net网络服务转变为Java,并使这些服务可运行于任何支持Java的服务器软件上. iNet的一个优点是那些把IT基础设施建立在J2EE和Windows软件上的公司,可继续构建微软代码的应用软件,但需运行在支持Java的

如何使arm linux下mjpg-streamer支持多摄像头

问题描述 如何使arm linux下mjpg-streamer支持多摄像头 tiny6410开发板,想要使用mjpg-streamer同时打开多个摄像头(两个就好),在网上很少有相关资料只是有人说需要做一些修改,有大神可以具体的指教一下么 解决方案 树莓派+mjpg-streamer+usb摄像头

如何使linux的时钟源支持kvm-clock,需要什么样的硬件要求吗?

问题描述 如何使linux的时钟源支持kvm-clock,需要什么样的硬件要求吗? 为了解决kvm虚拟机内部分软件计时不准确的问题,准备使用kvm-clock时钟源,但是几台redhat系统的服务器都未支持kvmclock时钟源.请有了解这部分知识的人讲解一下,谢谢

Material Design系列之自定义Behavior支持所有View_Android

本文实例为大家分享了Android自定义Behavior支持所有View ,供大家参考,具体内容如下 一.实现效果图 这个右下角的FAB,动画当然可以多种多样,可以放在界面的任何地方,我们这里只举个例子.但是v7包中提供的Behavior目前只能是FloatingActionButton来用,所以今天我们实现的这个Behavior是支持所有的View的,可以用在ImageView.Button.Layout,只要是继承View的类都可以用. 二.自定义Behavior和动画的封装 我们知道Beh

关于php支持分块与断点续传文件下载功能代码_php技巧

本文章要介绍了这篇文章是一篇关于php流下载,就是可以支持分块与断点续传文件下载,有需要的朋友可以看看.代码如下 复制代码 代码如下: $dowmFile = dirname ( __FILE__ ) . '/Nokia – Always Here.mp3′; //要下载的文件,绝对或相对 $dowmName = 'Nokia – Always Here.mp3′; ob_start (); getlocalfile ( $dowmFile, $dowmName ); flush (); ob_

SAP ABAP 因系统维护使ABAP语法不再被支持导致使用很久的程序报错问题之分析

SAP ABAP 因系统维护使ABAP语法不再被支持导致使用很久的程序报错问题之分析 所在项目客户的一家工厂上线已经超过半年,其业务部门提出一个使用了半年的RF枪程序,突然不能使用了.程序直接Dump了:       经过调查,上个周末客户SAP团队对服务器做了一次maintenance.   因此我们初步断定,是此次maintenance里可能是有Kernel升级了,导致之前的程序的语法不能用了.我们找到相关的代码,发现如下代码里(line 447):   Insert into chvw_p