视频上传-实现断点续传

视频上传

单纯的视频上传好办 前端传一个大文件的流 后端按照 MultipartFile 接受 然后读数据。

但是问题是视频这种大文件 它一般不会短时间传完, 这中间如果 前端用户的网络不好断了

那么你这个大文件就要重新传 等于前面传的都白费了

所以大文件上传/下载都有一个很重要的功能就是 断点续传

大家平时打lol 或者steam 下载游戏 如果你下到一半 把网关了, 你还可以重新继续从刚才的进度下载

一般不会让你从0又下载一遍

分布式文件系统

这里单独要说 分布式文件系统 的概念,就是我们平时后端做上传图片 视频, 那么前端上传过来的这些东西 后端最后存在哪 这是个问题,
如果是微服务架构中要集中管理 且多方调用,那么你存服务器的机器上面 肯定是不方便的。

所以一般都会有一个 分布式文件系统 专门做这件事

后端接收上传完毕后 把文件 存入分布式文件系统中 把分布式文件系统的路径 再存入数据库


分布式文件系统很多 推荐大家去了解一下 比如MinIO 或者其他开源免费的。

断点续传

然后我们再说断点续传, 这是一个常见的功能性的东西, 并不是某个编程语言的特性
所以我们主要说思路 。

  • 首先 前端/客户端负责把数据分块 比如20M的视频 分成20个1M的数据块 每个块的名字可以用序号 1-20
  • 前端先发一个检查请求给后端 查下这个文件是否存在? 不存在则开始传
  • 前端再发一个请求 包含文件名(一般用md5值 可以解析出文件分布式系统存储路径)分块序号(1-20) 检查一下分块(前端有序的从分块1开始发)是否存在(如果存在说明这个分块已经传完了 传下一个分块 这里就实现了断点续传) 不存在就传这个分块
  • 前端发请求传一个分块的数据 包含文件名(一般用md5值 可以解析出文件分布式系统存储路径)分块序号(1-20)具体的分块文件数据
  • 前端传完最后一个分块 全部传完了给后端发一个合并的指令 后端讲刚才所有的数据快合并

在这里插入图片描述
这里就是断点续传的思路 代码其实不负责 主要是这个思路

相关推荐

  1. 使用python实现断点

    2024-04-08 21:28:06       48 阅读
  2. 前端实现断点文件

    2024-04-08 21:28:06       49 阅读
  3. 断点功能

    2024-04-08 21:28:06       63 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-08 21:28:06       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-08 21:28:06       100 阅读
  3. 在Django里面运行非项目文件

    2024-04-08 21:28:06       82 阅读
  4. Python语言-面向对象

    2024-04-08 21:28:06       91 阅读

热门阅读

  1. Qt实现Kermit协议(五)

    2024-04-08 21:28:06       37 阅读
  2. TypeScript学习文档(一)

    2024-04-08 21:28:06       28 阅读
  3. SHELL脚本编程训练1

    2024-04-08 21:28:06       33 阅读
  4. Spark产生小文件的原因及解决方案

    2024-04-08 21:28:06       35 阅读
  5. 多叉树先序遍历,LeetCode 1600. 王位继承顺序

    2024-04-08 21:28:06       36 阅读
  6. 【初识C语言】1

    2024-04-08 21:28:06       42 阅读
  7. GBase 8s Docker镜像说明

    2024-04-08 21:28:06       35 阅读
  8. Apache—POI详解、小案例展示

    2024-04-08 21:28:06       31 阅读
  9. C语言 超市商品(Goods) 销售 (Stock) 信息管理软件

    2024-04-08 21:28:06       29 阅读
  10. PgSQL的with as语法

    2024-04-08 21:28:06       39 阅读
  11. 【LeetCode热题100】【栈】柱状图中最大的矩形

    2024-04-08 21:28:06       28 阅读
  12. vscode配置vue + python

    2024-04-08 21:28:06       41 阅读
  13. Cisco Nexus 93180做为fex使用

    2024-04-08 21:28:06       37 阅读
  14. LeetCode 1600.王位继承顺序:深度优先搜索(DFS)

    2024-04-08 21:28:06       34 阅读
  15. Acwing2024蓝桥杯贡献法

    2024-04-08 21:28:06       31 阅读
  16. KVM基础管理命令

    2024-04-08 21:28:06       33 阅读
  17. C++(10): std::map、std::multimap与std::unordered_map

    2024-04-08 21:28:06       29 阅读