让自定义文件下载支持断点续传(HTTP_RANGE Adodb.Stream)

原创 2002年09月10日 13:38:00

自定义文件下载基本上用在以下几处

1.浏览器已知类型,如Avi,Doc等如果本地安装了关联程序就会自动在浏览器上打开
2.权限管理,有时候不是所有的人都允许下载,所以需要在下载的时候进行判断
3.经常需要将特殊文件搁到虚拟目录访问不到的地方,以及asp和asa等文件的下载

大家经常用的是Adodb.Stream,但这时就有个缺陷,就是不支持断点续传了。
经常看到flashget中是红脸(即不支持断点续传)其实支持断点续传也很简单。如下:
利用读取HTTP_RANGE,然后对Adodb.Stream进行定位,然后再输出
(原来代码中本来还有Content-Length的设置,理论上应该有,但实践上可省去)

function dl(f,n)
 on error resume next
 Set S=CreateObject("Adodb.Stream")
 S.Mode=3
 S.Type=1
 S.Open 
 S.LoadFromFile(f)
 if Err.Number>0 then
  Response.Status="404"
 else
  Response.ContentType="application/octet-stream"
  Response.AddHeader "Content-Disposition:","attachment; filename=" & n
  Range=Mid(Request.ServerVariables("HTTP_RANGE"),7)
  if Range="" then
   Response.BinaryWrite(S.Read)
  else
   S.position=Clng(Split(Range,"-")(0))
   Response.BinaryWrite(S.Read)
  End if
 end if
 Response.End
end function

call dl(Server.MapPath("c.avi"),"c.avi")

这时候你会看到红脸变笑脸了,一般用在大文件的下载

本地FlashGet测试通过,并用fc比较下载后的文件和原先的文件
FC: 找不到相异处

自定义文件下载支持断点续传(HTTP_RANGE Adodb.Stream)

自定义文件下载基本上用在以下几处  1.浏览器已知类型,如Avi,Doc等如果本地安装了关联程序就会自动在浏览器上打开  2.权限管理,有时候不是所有的人都允许下载,所以需要在下载的时候进行判...
  • smave88
  • smave88
  • 2014年04月21日 17:29
  • 423

PHP 实现断点续传的原理和方法

PHP 实现断点续传的原理和方法 0. http协议从1.1开始支持静态获取文件的部分内容,为多线程下载和断点续传提供了技术支持。它通过在Header里两个参数实现的,客户端发请求时对应的是Acce...
  • tty521
  • tty521
  • 2017年03月18日 21:07
  • 184

让自定义文件下载支持断点续传

自定义文件下载基本上用在以下几处  1.浏览器已知类型,如Avi,Doc等如果本地安装了关联程序就会自动在浏览器上打开 2.权限管理,有时候不是所有的人都允许下载,所以需要在下载的时候进行判断 3.经...
  • xuehouniao
  • xuehouniao
  • 2005年08月19日 13:58
  • 710

PHP range协议实现输出文件断点续传

本文介绍了PHP使用range协议实现输出文件断点续传代码实例,需要的朋友可以参考下   range协议用途:一般是用在断点续传的时候,但是实际的用户很大,例如你的web serv...
  • jbxue123
  • jbxue123
  • 2014年07月04日 22:56
  • 363

文件下载之断点续传(客户端与服务端的实现)

前面讲了文件的上传,今天来聊聊文件的下载。 老规矩,还是从最简单粗暴的开始。那么多简单算简单?多粗暴算粗暴?我告诉你可以不写一句代码,你信吗?直接把一个文件往IIS服务器上一扔,就支持下载。还TM么...
  • binyao02123202
  • binyao02123202
  • 2017年08月02日 23:29
  • 1415

PHP断点续传-HTTP

http://www.php100.com/html/webkaifa/PHP/PHPyingyong/2011/1215/9495.html  
  • luguo0816
  • luguo0816
  • 2011年12月15日 12:38
  • 400

nginx断点续传

有些时候客户端可能只需要请求nginx服务器上的部分数据, 例如: 我们在看电影时, 常常拖动快进条,跳到指定的位置开始观看。 这其实是nginx的断点续传功能, 从指定位置开始观看,相当于向ngin...
  • ApeLife
  • ApeLife
  • 2017年06月23日 00:32
  • 2792

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

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

Java 文件下载(支持断点续传)(实例2)

File file = new File(location);                                                if (file.exists...
  • wenzhihui_2010
  • wenzhihui_2010
  • 2014年09月22日 16:07
  • 625

单线程支持断点续传文件下载

MyWindow.h #ifndef MYWINDOW_HEAD #define MYWINDOW_HEAD #pragma once #include #include #include...
  • qq125096885
  • qq125096885
  • 2016年05月16日 14:45
  • 665
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:让自定义文件下载支持断点续传(HTTP_RANGE Adodb.Stream)
举报原因:
原因补充:

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