关于断点续传下载的破事

断点续传下载的原理无非就是在header里面添加一个头域 range.指定下载的范围

关于断点续传下载的破事

断点续传下载的原理无非就是在header里面添加一个头域 range.指定下载的范围,例如

range=0-	//下载整个文件
range=x-	//下载从x字节开始以后的文件
range=x-y	//现在x字节到y字节区间的文件

别的就不举例了。这是基本原理,前提是服务器软件支持断点续传,否则都白搭。这里所举例子都是在nginx基础上的。
然后,有一些比较奇葩的地方。

range=0-0	//下载一个字节
range=x-x	//下载一个字节
range=y-x	//y大于x,下载整个文件

注意最后一个,当起始位置大于结束位置的时候,服务器会返回整个文件。所以,当一个文件已经下载完成了,你再拿这个文件的大小去做断点续传,你会得到两个文件合并。。。比如你的代码是这样的:

.addHeader("range", "bytes="+file.lenght+"-");//当file.lenght等于完整文件大小的时候,你再这样搞,会得到两个合并的文件。