所谓断点下载,也就是要从文件已经下载的地方开始继续下载。
在以前版本的 HTTP 协议是不支持断点的,HTTP/1.1 开始就支持了。一般断点下载时要用到 Range 。
Range 字段
请求头(Request Header
)中,指定第一个字节的位置和最后一个字节的位置。用于告诉服务器自己想取对象的哪部分,一般格式:
Range: bytes=[first byte pos]-[last byte pos]
例如:
Range: bytes=1173546-
或者
Range: bytes=1173546-2173546
例:请求下载整个文件:
Request Header
GET /test.rar HTTP/1.1
Connection: close
Host: 116.1.219.219
//一般请求下载整个文件是bytes=0-
//或不用这个头,一般正常回应
Range: bytes=0-801
Range只是用来支持下载的,因为本地客户端在发起请求的时候能够通过文件的大小判断自己下到哪了;但是上传是不行的,即使客户端有记录进度,也不代表这些数据真的到了服务器,所以上传是用的切块,下载是用的range续传
举个例子: