xxg 274a6ec8bc 文件断点续传 | 2 rokov pred | |
---|---|---|
doc | 2 rokov pred | |
src | 2 rokov pred | |
.gitignore | 2 rokov pred | |
LICENSE | 2 rokov pred | |
README.md | 2 rokov pred | |
pom.xml | 2 rokov pred |
本项目接口文档使用的是自定义的无侵入Swagger组件该组件已发布到中央仓库,喜欢的可以点个star
还有Swagger升级版Knife4j组件,同样发布到了中央仓库,都是无代码侵入的
开发环境:JDK8,SpringBoot2.x,MySQL5.5,web-uploader
开发工具:IntelliJ IDEA
项目提供了普通文件上传接口 & 大文件分片上传接口,普通文件上传的接口只是附加提供的,目前与前端集成的是大文件分片上传,接口是breakpointResumeUpload。
分片: 分片任务是在前端由web-uploader插件完成,流程:1.前端先发送check-file(检查文件MD5)来确认文件是直接秒传还是分片上传,如果计算出文件MD5已经存在,则启用秒传(秒传就是不传),如果是新文件,则需要分片上传,由web-uploader插件将文件按固定大小进行切割,然后逐片上传。
断点续传: 意思就是一个大文件分了多少片,这些片已经上传了哪些,还有哪些没上传,这些都会记录在文件存储目录下的.config文件中,当你上传大文件时,传一部分后刷新浏览器或关闭浏览器,这时候传输会中断,然后你再打开页面重新上传该文件,它会先检测还有哪些片没有上传,然后直接上传的上次未传的片,这就是断点续传。
导入doc目录下的sql文件到数据库,并修改application.yml配置文件中的数据库配置
先看一下效果:可一次性上传多个文件(这里只演示了一个,因为给忘记了,嫌麻烦就没有重新测试)
打开doc文件夹下的index.html,选择文件,这里为了显示断点续传的效果,我选择了一个大文件,将自动上传
上传中:
上传完成:
注:
1.上传完成后再次选择这个文件就会启动秒传功能。
2.上传过程如果中断,下次再上传该文件将只会上传剩下的分片(断点续传)
3.上传完成后文件配置路径中会生成.conf文件,这个文件就是判断文件是否已经上传的配置,如果删除,则下次上传不会启动秒传,而是创建一个后缀为_tmp的文件,导致新上传文件不可用。所以这里可以进行二次开发进行限制上传、覆盖上传或者文件重命名操作。
本项目试运行在Windows,如要部署到Linux系统,因为两者的系统路径格式不同,所以需要改配置文件中的文件上传路径,所以为了方便修改配置文件,就把配置文件分离了,部署的时候在要运行的jar包的同级目录下创建一个config目录,然后把配置文件直接拷贝进去就能正常使用了。 另外可以百度下配置文件的加载顺序及配置文件扫描路径,因为一般项目部署都需要改动一些配置,所以这么做就是为了方便部署。
本项目提供了Swagger接口文档,访问:http://IP:端口/swagger-ui.html
接口就不再一一介绍,在代码中有解释。
上传接口与前端的对接时,只需要传过来的是form表单里的即可。例如:
同理其他前端UI框架的文件上传也是利用表单进行传输的。