springboot 中间件
插件
upload-file-jdk
除了前端的解决方案,同时也提供了后端周边,例如:可以直接引用 spring boot 中间件
如何引入
xml
<dependency>
<groupId>io.github.a572251465</groupId>
<artifactId>upload-file-jdk-spring-boot-starter</artifactId>
<!-- 可以随意指定版本 建议指定最高版本 -->
<version>1.0.5</version>
</dependency>
配置文件
简单配置
yaml
io:
lvdaxian:
upload:
file:
# 配置保存到磁盘
enabledType: disk
详细配置
参数 | 描述 | 默认值 | 可选项 |
---|---|---|---|
io.lvdaxian.upload.file.enabled-type | 启动哪种方式保存文件 | - | disk / minio / custom |
io.lvdaxian.upload.file.enabled-logger | 是否支持输出 logger | false | - |
io.lvdaxian.upload.file.http-interceptor-order | 拦截器顺序 | 10 | - |
io.lvdaxian.upload.file.context-prefix | 请求公共前缀 | "" | - |
※1 io.lvdaxian.upload.file.minio.access-key | MINIO 的accessKey | - | - |
※1 io.lvdaxian.upload.file.minio.secret-key | MINIO 的secretKey | - | - |
※1 io.lvdaxian.upload.file.minio.bucket-name | MINIO 的桶名称 | uploadfiletmpdir | - |
※1 io.lvdaxian.upload.file.minio.endpoint | MINIO 的入口点 | - | - |
※2 io.lvdaxian.upload.file.disk.save-dir | 磁盘保存目录 | uploadFileTmpDir | - |
※2 io.lvdaxian.upload.file.disk.merge-file-way | 文件合并方式 | ZERO_COPY_WAY | ZERO_COPY_WAY / NORMAL_WAY |
※2 io.lvdaxian.upload.file.disk.enabled-concurrency-merge | 是否开启并发合并 | false | - |
※2 io.lvdaxian.upload.file.disk.delay-concurrency-merge-time | 并发合并 初次延迟时间 | 20 | - |
※2 io.lvdaxian.upload.file.disk.thread-sleep-time | 并发线程 执行休眠时间 | 5 | - |
※1
MINIO 的配置参数,只有enabled-type = 'minio'
的时候 才有效※2
DISK 的配置参数,只有enabled-type = 'disk'
的时候 才有效
如何拿到上传的文件
既然我们已经将文件通过断点续传的方式上传了,但是我们怎么拿到文件呢
java
@RestController
public class TestController {
// 该DI 会在启动器中 直接注入,直接使用即可
@Resource
private UploadFileUtils fileUtils;
@GetMapping("/getFile/{filename}")
public String getFile(@PathVariable("filename") String filename) {
// 其实真正需要调用的是这个方法
// filename 是断点续传上传后的文件名字
// 应该是前端给后端的,后端直接拿这个名字调用该接口
MultipartFile file = fileUtils.getMultipartFileByName(filename);
// todo 拿到 file 后进行后续的操作
return null;
}
}
如何 自定义
配置
yaml
io:
lvdaxian:
upload:
file:
# 配置保存到磁盘
enabledType: custom
重写接口
java
@Component
public class CustomOperate implements FileOperate {
}
@Component
public class UploadFileUtilsCustomImpl implements UploadFileUtils {}
版本管理
1.0.1
暂时废弃1.0.2
暂时废弃1.0.3
暂时废弃1.0.4
暂时废弃1.0.5
实现了基于disk
的断点续传的后端中间件, 已经部署生产了1.0.6
暂时废弃1.0.7
实现了对minio
的支持,以及文件合并的时候 支持零拷贝