当前位置: 首页 > news >正文

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

前言

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

基于分片的断点续传和秒传

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

1. 分片上传

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

2. 断点续传

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

3. 秒传

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

4. 前后端各自的工作

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

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

异步上传

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

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

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

http://www.xdnf.cn/news/1094671.html

相关文章:

  • huggingface 笔记: Trainer
  • Airtest 的 Poco 框架中,offspring()
  • 使用Python求解最优化问题:从理论到实践的全方位指南
  • 2025年上半年软件设计师考后分享
  • LLM中 最后一个词语的表征(隐藏状态)通常会融合前面所有词语的信息吗?
  • 跨服务sqlplus连接oracle数据库
  • Flink-1.19.0源码详解6-JobGraph生成-后篇
  • 【Java】【字节面试】字符串中 出现次数最多的字符和 对应次数
  • pytorch chunk 切块
  • 两种方式清除已经保存的git账号密码
  • 11.7 ChatGPT奖励模型完全解读:RLHF核心技术深度剖析与Hugging Face实战
  • MyBatisPlus-03-扩展功能
  • 学习日记-spring-day44-7.9
  • 前端进阶之路-从传统前端到VUE-JS(第四期-VUE-JS页面布局与动态内容实现)(Element Plus方式)
  • 2025快手创作者中心发布视频python实现
  • 基于docker进行渗透测试环境的快速搭建(在ubantu中docker设置代理)
  • 单细胞入门(2)-经典案例分析
  • 分治算法---快排
  • 【TCP/IP】2. 计算机网络与因特网体系结构
  • Linux驱动04 --- 网络编程TCP客户端
  • 【AI News | 20250708】每日AI进展
  • mysql 故障检测与处理
  • 【牛客刷题】游游的字母串
  • RIP实验
  • 练习:对象数组 5
  • DolphinScheduler 3.2.0 Worker启动核心源码解析
  • C/C++ 高频八股文面试题1000题(二)
  • EPLAN 电气制图(六):结构盒与设备管理器核心概念(基础知识选看)
  • Shader面试题100道之(41-60)
  • 【视频观看系统】- 技术与架构选型