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

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

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: 找不到相异处

时间: 2024-09-30 08:24:40

让自定义文件下载支持断点续传的相关文章

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

ado|stream|下载 自定义文件下载基本上用在以下几处 1.浏览器已知类型,如Avi,Doc等如果本地安装了关联程序就会自动在浏览器上打开2.权限管理,有时候不是所有的人都允许下载,所以需要在下载的时候进行判断3.经常需要将特殊文件搁到虚拟目录访问不到的地方,以及asp和asa等文件的下载 大家经常用的是Adodb.Stream,但这时就有个缺陷,就是不支持断点续传了.经常看到flashget中是红脸(即不支持断点续传)其实支持断点续传也很简单.如下:利用读取HTTP_RANGE,然后对A

php实现的支持断点续传的文件下载类_php技巧

本文实例讲述了php实现的支持断点续传的文件下载类及其用法,是非常实用的技巧.分享给大家供大家参考.具体方法如下: 通常来说,php支持断点续传,主要依靠HTTP协议中 header HTTP_RANGE实现. HTTP断点续传原理: Http头 Range.Content-Range() HTTP头中一般断点下载时才用到Range和Content-Range实体头, Range用户请求头中,指定第一个字节的位置和最后一个字节的位置,如(Range:200-300) Content-Range用

php的一个支持断点续传的文件下载类

php 支持断点续传,主要依靠HTTP协议中 header HTTP_RANGE实现. HTTP断点续传原理 Http头 Range.Content-Range() HTTP头中一般断点下载时才用到Range和Content-Range实体头, Range用户请求头中,指定第一个字节的位置和最后一个字节的位置,如(Range:200-300) Content-Range用于响应头 请求下载整个文件: GET /test.rar HTTP/1.1 Connection: close Host: 1

文件下载 断点续传-我想实现从外部网站下载文件到我们公司的服务器上,支持断点续传

问题描述 我想实现从外部网站下载文件到我们公司的服务器上,支持断点续传 我想实现从外部网站下载文件到我们公司的服务器上,支持断点续传并且用一个线程下载一个文件,请问哪位有什么思路或者源码参考.麻烦大家给我出出主意. 网上都是从服务器上下载到本地的案例.这种可以应用到我这种需求上吗? 顺便问下http协议和ftp协议下载文件是否支持下载到本地指定路径,对文件大小类型有没有限制. 用java语言 解决方案 1.先用代码解析外部网站下载页面获取下载地址 2.代码实现http协议请求解析得到的下载地址,

.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 协议参阅: * 使文件下载的自定义连接支持

Swift HTTP网络操作库Alamofire实现文件下载,断点续传例子

七,使用Alamofire进行文件下载 1,自定义下载文件的保存目录 下面代码将logo图片下载下来保存到用户文档目录下(Documnets目录),文件名不变. Alamofire.download(.GET, "yun_qi_img/logo.png") {     temporaryURL, response in     let fileManager = NSFileManager.defaultManager()     let directoryURL = fileMana

PHP支持断点续传实例代码

让PHP下载代码支持断点续传 主要靠的 HTTP协议中header Content-Range来实现 先来说说 HTTP的下载原理 对于HTTP协议,向服务器请求某个文件时,只要发送类似如下的请求即可:  代码如下 复制代码 GET /Path/FileName HTTP/1.0 Host: www.server.com:80 Accept: **表示接收任何类型的数据.User-Agent表示用户代理,这个字段可有可无,但强烈建议加上,因为它是服务器统计.追踪以及识别客户端的依据.Connec

PHP 下载远程文件类(支持断点续传)

PHP 下载远程文件类,支持断点续传下载,代码内含有具体的调用说明.程序主要是使用 HTTP 协议下载文件,HTTP1.1协议必须指定文档结束后关闭链接,否则读取文档时无法使用feof判断结束,可以有两种使用方法,具体请下载查看源码. <?php /** * 下载远程文件类支持断点续传 */ class HttpDownload { private $m_url = ""; private $m_urlpath = ""; private $m_scheme