概述
断点续传:在下载或上传时,将下载或上传任务(一个文件或一个压缩包)人为的划分为几个部分,每一个部分采用一个线程进行上传或下载,如果碰到网络故障,可以从已经上传或下载的部分开始继续上传下载未完成的部分,而没有必要从头开始上传下载。用户可以节省时间,提高速度。
断点续传
为什么需要断点续传?
文件上传过程
使用者在前端选择好要上传的文件,然后后端处理文件,先将文件加载到运行内存中,然后系统调用相关的API(应用程序接口)将文件写入到硬盘中
两个原因:
- 当上传的文件过大时会导致请求速度下降,占用过多的带宽资源
- 如果上传文件的过程中发生了网络中断、服务中断、等导致上传过程中断的情况,就可能会导致文件重新上传
所以需要断点续传来保证上传文件的效率(主要是针对大文件的上传)
断点续传原理
服务端给客户端一个上传位置标记p,然后客户端将文件指针移动到标记p位置,将文件剩余部分通过输入流上传给服务端(客户端记录自己的下载位置,若下载中断,下次下载的时候发送下载数据的时候,告诉服务端开始下载,下载多少数据)
什么是断点?
文件上传过程中,文件被分为N块,然后使用多线程并发上传,当该过程因为某种原因中断时,此时中断的位置就叫做断点
什么是续传?
从断点(上传中断的位置)继续上传剩余的文件
续传是如何实现的?
- 先确定需要续传的文件,通过对文件进行MD5加密作为文件的标识符
- 在HTTP协议中断点续传的几个头部信息
下载响应头部
Accept-Ranges: 服务器告诉客户端自己支持资源传输范围的定义,告诉客户端自己支持断点续传
Accept-Ranges:bytes
Content-Range<