用Java实现HTTP断点续传

(一)断点续传的原理

其实断点续传的原理很简单,就是在Http的请求上和一般的下载有所不同而已。打个比方,浏览器请求服务器上的一个文时,所发出的请求如下:

假设服务器域名为www.bianceng.cn,文件名为down.zip。

GET /down.zip HTTP/1.1
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-
excel, application/msword, application/vnd.ms-powerpoint, */*
Accept-Language: zh-cn
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)
Connection: Keep-Alive

服务器收到请求后,按要求寻找请求的文件,提取文件的信息,然后返回给浏览器,返回信息如下:

200
Content-Length=106786028
Accept-Ranges=bytes
Date=Mon, 30 Apr 2001 12:56:11 GMT
ETag=W/"02ca57e173c11:95b"
Content-Type=application/octet-stream
Server=Microsoft-IIS/5.0
Last-Modified=Mon, 30 Apr 2001 12:56:11 GMT

所谓断点续传,也就是要从文件已经下载的地方开始继续下载。所以在客户端浏览器传给

Web服务器的时候要多加一条信息--从哪里开始。

下面是用自己编的一个"浏览器"来传递请求信息给Web服务器,要求从2000070字节开始。

GET /down.zip HTTP/1.0
User-Agent: NetFox
RANGE: bytes=2000070-
Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2

仔细看一下就会发现多了一行RANGE: bytes=2000070-;这一行的意思就是告诉服务器down.zip这个文件从2000070字节开始传,前面的字节不用传了。

服务器收到这个请求以后,返回的信息如下:

206
Content-Length=106786028
Content-Range=bytes 2000070-106786027/106786028
Date=Mon, 30 Apr 2001 12:55:20 GMT
ETag=W/"02ca57e173c11:95b"
Content-Type=application/octet-stream
Server=Microsoft-IIS/5.0
Last-Modified=Mon, 30 Apr 2001 12:55:20 GMT

和前面服务器返回的信息比较一下,就会发现增加了一行:

Content-Range=bytes 2000070-106786027/106786028

返回的代码也改为206了,而不再是200了。

知道了以上原理,就可以进行断点续传的编程了。

时间: 2024-09-13 07:23:01

用Java实现HTTP断点续传的相关文章

文件下载-java服务器文件断点续传

问题描述 java服务器文件断点续传 如何让服务器 支持断点续传的功能 要下载的文件需要放在服务器的那个位置? 客户端那边说了 我这边只需要提供给他 一个文件的下载链接就好了 而且还要支持断点续传 如何实现呢 求大神帮忙 解决方案 java 断点续传文件到远程服务器Java断点续传服务器代码java 文件下载 断点续传 解决方案二: 这个功能需要客户端配合一下,让客户端请求时带上已经成功收到字节数做为参数,你返回数据流时跳过这些字节,然后再客户端进行合并,就可以了. 解决方案三: 解析HTTP头

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技巧

本文实例讲述了PHP实现断点续传下载的方法.分享给大家供大家参考.具体如下: $fname = 'http://XXXX/MMLDZG.mp3'; $fp = fopen($fname,'rb'); $fsize = filesize($fname); if (isset($_SERVER['HTTP_RANGE']) && ($_SERVER['HTTP_RANGE'] != "") && preg_match("/^bytes=([0-9]

JAVA实现FTP断点上传的方法_java

本文实例讲述了JAVA实现FTP断点上传的方法.分享给大家供大家参考.具体分析如下: 这里主要使用apache中的net包来实现.网址http://commons.apache.org/net/.具体包的下载和API文档请看官网. 断点上传就是在上传的过程中设置传输的起始位置.并设置二进制传输. import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.

android 开发从入门到精通

Android-Tips This is an awesome list of tips for android. If you are a beginner, this list will be the first choice for you when you have a difficult time. Welcome Star and Fork, your support is my greatest affirmation. 学习 Android 至今,大大小小的坑没少踩过,庆幸的是,

用Java实现断点续传

(一)断点续传的原理 其实断点续传的原理很简单,就是在Http的请求上和一般的下载有所不同而已.打个比方,浏览器请求服务器上的一个文时,所发出的请求如下:假设服务器域名为wwww.sjtu.edu.cn,文件名为down.zip.GET /down.zip HTTP/1.1Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-excel, application/msword, applic

非C#的文章,不过大家可以借鉴一下其中思想--用Java实现断点续传(HTTP)

用Java实现断点续传(HTTP)        内容: (一)断点续传的原理 (二)Java实现断点续传的关键几点 (三)断点续传内核的实现 关于作者 钟华 (zhong_hua@263.net)2001 年 5 月 (一)断点续传的原理其实断点续传的原理很简单,就是在Http的请求上和一般的下载有所不同而已.打个比方,浏览器请求服务器上的一个文时,所发出的请求如下:假设服务器域名为wwww.sjtu.edu.cn,文件名为down.zip.GET /down.zip HTTP/1.1Acce

java 下载 断点续传-用java语言从web下载文件到本地指定路径下

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

java实现断点续传的原理

其实断点续传的原理很简单,就是在Http的请求上和一般的下载有所不同而已.  打个比方,浏览器请求服务器上的一个文时,所发出的请求如下:  假设服务器域名为wwww.sjtu.edu.cn,文件名为down.zip.  GET /down.zip HTTP/1.1  Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-  excel, application/msword, applica