SpringBoot集成文件

您所在的位置:网站首页 嵌入式软件升级断点续传怎么操作 SpringBoot集成文件

SpringBoot集成文件

2024-07-04 22:27| 来源: 网络整理| 查看: 265

# SpringBoot集成文件 - 大文件的上传(异步,分片,断点续传和秒传)

上文中介绍的是常规文件的上传和下载,而超大文件的上传技术手段和普通文件上传是有差异的,主要通过基于分片的断点续传和秒传和异步上传等技术手段解决。本文主要介绍SpringBoot集成大文件上传的案例。

# 1. 知识准备

大文件的上传技术手段和普通文件上传是有差异的,主要通过基于分片的断点续传和秒传和异步上传解决。

# 1.1 大文件面临的问题上传速度慢 -- 应对: 分块上传上传文件到一半中断后,继续上传却只能重头开始上传 -- 应对: 断点续传相同文件未修改再次上传, 却只能重头开始上传 -- 应对: 秒传# 1.2 基于分片的断点续传和秒传

当我们上传的文件很大时,对大文件的处理通常通过分片上传、断点续传和秒传技术手段实现。

分片上传

分片上传就是将一个大文件分成若干份大小相等的小块文件,等所有小块文件上传成功后,再将文件进行合并成完整的原始文件。

断点续传

断点续传就是重新上传文件时先判断哪些文件块已经上传过了(比如将分片的chuck md5等信息保存在DB中),如果上传过了则跳过这些块,否则上传没有上传的块。

秒传

当用户选择上传一个文件时,服务端检测该文件之前是否已经被上传过,如果服务器已经存有该文件(完全一样),就立马返回前端 “文件已上传成功”。前端随即将进度条更新至100%。 这样给用户的感觉就是 “秒传” 的感觉。

# 1.2.1 前后端该怎么做?

对于分片上传,前后端分别需要怎么做呢?

前端:需要将文件file.slice()成多个文件块,并计算每一块的md5值,每次请求上传都是传一个小文件块。后端:需要接收每次上传的文件块并保存文件块的信息(比如md5), 如果已经上传则跳过;最后等所有文件上传完成之后,将所有的文件块合并成一个大文件。# 1.3 异步上传

当我们上传的文件很大,后台需要处理的时间很长,用户期望切换到其它页面继续工作,而不需要等待完成。这时候我们可以采用异步上传的方式。

在SpringBoot中将一个方法声明为异步方法非常简单,只需两个注解即可@EnableAsync和@Async。

@EnableAsync用于开启SpringBoot支持异步的功能,用在SpringBoot的启动类上。@SpringBootApplication @EnableAsync // 这里 public class App { public static void main(String[] args) { SpringApplication.run(App.class, args); } } @Async用于方法上,标记该方法为异步处理方法。@Service public class UserServiceImpl { @Async // 这里带@Async的方法,会被当成一个子线程 public void processFile(InputStream inputStream) { } } # 参考文章

SpringBoot集成文件 - 大文件的上传(异步,分片,断点续传和秒传)open in new window

基于SpringBoot和WebUploader实现大文件分块上传.断点续传.秒传open in new window



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3