前言
近期的项目中涉及到1G以上的视频上传,除了考虑上传效率之外,还要考虑到用户在上传过程中出现断网,浏览器意外关闭等情况。下面是我调研的两种处理方式:
一、传统的处理方案是在本地新建临时文件夹,储存视频分片,等全部上传完成后进行合并,然后删除临时文件夹,这样做会存在问题:比如多个用户都上传了一半视频不想上传了,没有进行合并,那么将会大致大量的临时文件夹保存在服务器,造成空间浪费。这里还需要自己想办法手动清理临时文件中保存的视频分片。
二、通过Minio实现分片及断点续传,该方案可以解决上述传统方案中所产生的问题,minio自己会去处理没有上传完的分片。下面记录一下我的使用过程。
Minio集成
思路:
1、前端根据视频文件计算MD5,MD5用来做断点续传,如果不需要断点续传可以不计算MD5。
2、前端掉用后端接口获取切片临时上传地址,获取地址后,前端直连Minio将切片视频进行上传
3、如果出现上传中断,再次选择该文件上传时,后端根据MD5去数据库查取数据,并调用minio的listParts方法获取已上传的切片,后端处理数据后,响应给前端未上传的切片上传地址,前端拿到后将未上传的切分进行上传。
4、前端在所有切片上传完成后,调用后端的completeMultipartUpload方法合并所有切片。
代码:
依赖引入
<dependency>
<groupId>io.minio</groupId>
<artifactId>minio</artifactId>
<ve

文章介绍了在处理大文件,特别是1G以上视频上传时,如何利用Minio实现分片上传和断点续传功能,以解决上传中断和空间浪费的问题。前端首先计算视频MD5,然后通过后端接口获取分片上传地址,直接与Minio交互上传分片。若上传中断,可以根据MD5查询已上传的分片,继续未完成的上传,最后合并所有分片。
最低0.47元/天 解锁文章
1765

被折叠的 条评论
为什么被折叠?



