关于学成在线项目如何处理断点续传

我是基于分块上传的模式实现断点续传的需求,当文件上传一部分断网后前边上传过的不在上传。

具体逻辑流程如下

  1. 前端对文件进行分块处理
  2. 前端开个多线程一块一块上传,上传前服务端发个消息检验该分块是否上传,如果在文件系统 OSS/minio 存在,则不在上传。
  3. 等所有分块上传完毕,服务端合并所有分块,通过md5校验文件的完整性。
  4. 引文分块全部上传到服务器,服务起将所有分块按照顺序合并,就是写每个分块文件内容按顺序依次写入一个文件中,使用字节流去读写文件。
  5. 前端传给服务端一个md5值,服务端合并文件后计算合并后文件的md5值是否和前端一致,如果不一致说明可能由于网络丢包等各种原因需要重新上传。
  6. 上传完毕之后清理冗余的分块文件。

Q 分块文件清理问题?


上传一个文件进行分块上传,上传一半传不了了,之前的分块文件你是怎样处理的?

  1. 在数据库中专门由张表记录minio存储文件的分块信息,
  2. 当文件开始上传就会写入表中,状态设置为上传中,上传完成会更行为上传完成。
  3. 当一个文件传了一般不在上传说明该文件没有上传成功,会有定时任务去查询表中的记录,如果文件未上传完成,则删除minio中没有上传成功的文件目录。
posted @ 2024-05-15 15:53  叫授_pront  阅读(66)  评论(0)    收藏  举报