公司有项目由于客户需求可能需要接入不同的云服务商的对象存储中,所以有了做一个文件上传整合的spring-boot-starter的想法。
- 先简单介绍下这个组件:思路就是通过简单的配置,可以无缝切换对象存储服务商,类似spring-boot-streaming,只不过streaming支持的是消息队列而我的组件是针对对象存储的。
- 组件目前支持 Local、Fast-DFS、腾讯云COS、阿里云OSS、华为云OBS的上传与删除文件功能,
部分支持配置图片压缩水印等处理策略,引入依赖不做配置默认创建Local文件处理器,文件存储本地。 - 声明一点组件中的大部分代码来自于Halo博客的后端程序,我只是针对这部分代码做了一些修改和整合,方便其他项目引用配置。
- 上链接 upload-integration-boot-starter
使用方式
-
打包项目安装到本地maven仓库或上传私服,pom引入依赖
<dependency> <groupId>com.lmf</groupId> <artifactId>upload-integration-boot-starter</artifactId> <version>1.0.1</version> </dependency>
-
yml或properties文件中添加配置
#腾讯云配置示例 attachment: type: tencentcos tencent-cos: cos-tencent-domain: xxxxx-xxxxx-xxxxxx.cos.ap-shanghai.myqcloud.com cos-tencent-secret-id: xxxxxxxxxxxxxxxxxxxxxxxxxxxx cos-tencent-secret-key: xxxxxxxxxxxxxxxxxxxxxxxxxxx cos-tencent-region: ap-shanghai cos-tencent-bucket-name: xxxx-xxxxx-1305086754 cos-tencent-source: xxxxx
#Fast-DFS配置示例 attachment: type: fastdfs fast-dfs: fast-dfs-resource-url: http://10.10.10.10:8088 fast-dfs-tracker-server: 10.10.10.10:22122
-
注入FileHandlers调用upload方法上传文件
@Resource private FileHandlers fileHandlers; @PostMapping public ResultResponse<UploadResult> save(MultipartFile file) throws Exception { UploadResult upload = fileHandlers.upload(file); return new ResultResponse<>(upload); }
-
ok 就到这儿
评论区