一. 参考项目
基于springboot+vue.js实现的超大文件分片极速上传及流式下载,支持超大文件断点续传、秒传
软件架构
系统整体采用前后端分离开发,基于OpenJDK11版本:
前端:vue.js+elmentUI
后端:springboot+mybatis
数据库:mysql
工程管理工具:maven
https://gitee.com/luckytuan/fast-loader
该项目中上传模块采用了一个基于 simple-uploader.js 的 Vue 上传组件 vue-simple-uploader
github详解: https://github.com/simple-uploader/Uploader/blob/develop/README_zh-CN.md
详解博文基于vue-simple-uploader封装文件分片上传、秒传及断点续传的全局上传插件
simple-uploader.js 和 vue-simple-uploader 的github地址分别如下:
simple-uploader.js
vue-simple-uploader 组件
参考github项目
二. 大文件分片上传
利用blob对象实现大文件分片上传
我们在进行文件上传的时候,因为服务器的限制,会限制每一次上传到服务器的文件大小不会很大,这个时候我们就需要把一个需要上传的文件进行切割,然后分别进行上传到服务器。
假如需要做到这一步,我们需要解决两个问题:
怎么切割?
怎么得知当前传输的进度?
首先解决怎么切割的问题。因为File文件对象是继承于Blob对象的,因此File文件对象也拥有slice这个方法,我们可以使用这个方法将任何一个File文件进行切割。