通常情况下,Web服务器(如Apache)会默认开启对断点续传的支持。因此,如果直接通过Web服务器来提供文件的下载,可以不必做特别的配置,即可享受到断点续传的好处。断点续传是在发起HTTP请求的时候加入RANGE头来告诉服务器客户端已经下载了多少字节。等所有这些请求都返回之后,再把得到的内容一块一块的拼接起来得到完整的资源。
你可以通过以下的命令来测试一下。
Linux 测试服务器是否支持断点续传
localhost [~]# wget -S http://httpd.apache.org/images/httpd_logo_wide_new.png 2>&1 | grep ‘Accept-Ranges’
Accept-Ranges: bytes
输出结果 Accept-Ranges: bytes ,说明服务器支持按字节下载。
curl 命令发送字节范围下载
curl –range 0-99
http://images.apple.com/home/images/billboard_iphone_hero.jpg
这样可以到最开始99字节,结果如下图:
说明从服务器端按字节范围下载是完全没有问题的。
现在我们尝试以下方式:
1、一次性下载整个图片。
localhost [~]# curl –range 0-98315 http://images.apple.com/home/images/billboard_iphone_hero.jpg > test.jpg
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 98316 100 98316 0 0 524k 0 –:–:– –:–:– –:—:— 527k
完成后,test.jpg完全等于billboard_iphone_hero.jpg,文件大小为98,316 字节。
注意:字节是从0开始,结束字节为总字节长度 减 1。
2、分成3次下载,最后整合为一个文件。
localhost [~]# curl –range 0-1000 http://images.apple.com/home/images/billboard_iphone_hero.jpg > download_1
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 1001 100 1001 0 0 10166 0 –:–:– –:–:– –:–:– 10319
localhost [~]# curl –range 1001-10000 http://images.apple.com/home/images/billboard_iphone_hero.jpg > download_2
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 9000 100 9000 0 0 124k 0 –:–:– –:–:– –:–:– 219k
localhost [~]# curl –range 10001-98315 http://images.apple.com/home/images/billboard_iphone_hero.jpg > download_3
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 88315 100 88315 0 0 611k 0 –:–:– –:–:– –:–:– 616k
localhost [~]# cat download_1 download_2 download_3 > last.jpg
最终获得合并后的文件,last.jpg完全等于billboard_iphone_hero.jpg,文件大小为98,316 字节。
分享到:
相关推荐
java实现ftp断点续传,上传文件到FTP服务器,支持断点续传,同时支持LINUX主机,代码里面包括了比较多的java网络操作类,比如连接FTP的常规类、递归创建远程服务器目录 上传文件到服务器,新上传和断点续传操作,远程...
支持断点续传的下载进度对话框,已测试过的,大家放心使用
实现FTP上传,暂停断点续传等功能。已经测试过了,可以使用。希望大家多给点意见,是功能更完善。
NULL 博文链接:https://xiaoming123123.iteye.com/blog/1764714
来自国外的一个完整的下载程序,好就好在它支持代理服务器,并且实现了断点续传! 是一个不可多的的好东东!很好的参考。 在这基础上在继续发展,可以做出一个很棒的下载程序。 一般的下载程序都支持了多线程,...
Java上传文件到FTP服务器,支持断点续传
Ie断点续传插件,让Ie支持断点续传的插件
支持断点续传的C++代码
实现的代码演示了一个具备超大文件http上传的服务器,支持所有浏览器,支持断点续传,支持的文件大小不限,支持Windows与linux。
支持断点续传的在线更新代码 详见DOC下的说明文件,但作了部分改动。 注意不要删除backup和update这两个目录。 另外mzsf这个目录要上传到服务器端。 1、自动分析升级信息 2、自动判断文件时间是否需要升级 ...
对于开发人员来说,有了这些信息,断点续传功能将会变的和普通的文件上传功能一样简单。 相信新颖网络HTTP断点续传控件能够帮助您赢利市场。 产品介绍:[url=...
连接FTP服务器,实现文件的上传,删除功能,可以断点续传,支持退出重进App续传,断网重连续传。
关于socket编程的断点续传和相关IO流的应用,服务器端和客户端都有详细的代码可以参考,通过这个例子可以很清楚的了解,网络编程的基础。
这是一个用C#编写的大文件上传控件,支持断点续传,包括了控件源码和ASP.NET下的调用实例,上传文件的大孝客户端的唯一身份标识、上传类型(0:断点续传, 1:truncate,重新上传,2:上传,如果该文件已存在,则报403...
基于QT5的FTP传输,已经经过测试,支持断点续传。 基于qt5、、、QFtp类来自:https://qt.gitorious.org/qt/qtftp/source/8f60c8c0adca6e6183fb31b528d306439ca2d2c1: 更改qftp类中get函数,添加REST命令,实现断点...
这是一个用C#编写的大文件上传控件,支持断点续传,包括了控件源码和ASP.NET下的调用实例,上传文件的大孝客户端的唯一身份标识、上传类型(0:断点续传, 1:truncate,重新上传,2:上传,如果该文件已存在,则报403...
运用socket进行断点续传; 1 从客户端读取版本及服务器地址等信息 2 通过webservice将本地版本号与服务器版本号进行比对,如果服务器发布的版本号大于客户端版本号,则从服务器查找要更新的文件。 3 启动主线程,...
在下载有用的软件的时候常常因为网络或者其他原因突然断网,已经下载了一部分的软件又要重新下载,于是断点续传出现在网络上,大量的下载...不过断点续传功能需要服务器支持,现阶段的绝大多数服务器都支持断点续传。
android客户端实现断点续传功能,可实现多线程断点续传下载。实现android端断点续传下载需要服务器的支持,本demo中包含了个人写的服务器端的下载功能的demo.