SpringMvc实现分片上传,断点续传,进度条上传,秒传,分段下载

一、需求背景

大文件上传,需要分片,并实现断点续传,进度条显示,秒传功能。下载时可以暂停,分段下载。

二、实现原理

1.分片:前端浏览器将文件根据设定的规则分割成多片小文件,一片一片的上传到服务器。

2.秒传:前端浏览器截取文件的前面几m和最后几m字节又或者全部字节进行md5编码,可以生成文件的唯一md5码,根据这个md5码可以唯一确定一个文件,上传文件时同时将该md5码传送到后台,又或者后端也按照相同的md5计算规则,最终在数据库记录文件的md5值。上传前询问后端该md5码是否存在,如果存在,则不需要重复上传。

2.前端断点续传:前端记录好发送成功的片数,当暂停事件产生或者网络错误事件产生后,从最后一片开始接着上传文件。

3.后端断点续传:记录文件上传的进度,前端根据md5值来询问该md5文件的上传进度,下次上传从该片数开始。

4.进度条:假设分片将文件等分切割成100片,当上传到第5份,进度条为5%,第99片上传开始为98%。

按照片数和上传进度来渲染进度条即可。

5.暂停/分段下载:判断请求头是否有Range参数信息,有则按照Range参数所请求的部分开始读取文件。

返回体里增加Content-Range参数信息,没有chunked的时候增加Content-Length参数信息。

三、后端代码实现

项目地址:https://gitee.com/chemphern/fileupload-demo

  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值