内容简介:简介 在 SpringBoot 中通过简单的方式将文件存储到 本地、阿里云OSS、华为云OBS、七牛云Kodo、腾讯云COS、百度云 BOS、又拍云USS、MinIO、 AWS S3、金山云 KS3、美团云 MSS、京东云 OSS、天翼云 OOS、移动云 EOS、...
简介
在 SpringBoot 中通过简单的方式将文件存储到 本地、阿里云OSS、华为云OBS、七牛云Kodo、腾讯云COS、百度云 BOS、又拍云USS、MinIO、 AWS S3、金山云 KS3、美团云 MSS、京东云 OSS、天翼云 OOS、移动云 EOS、沃云 OSS、 网易数帆 NOS、Ucloud US3、青云 QingStor、平安云 OBS、首云 OSS、IBM COS、其它兼容 S3 协议的平台
后续即将支持 谷歌云存储、FTP、SFTP、WebDAV、Samba、NFS
GitHub:https://github.com/1171736840/spring-file-storage
Gitee:https://gitee.com/XYW1171736840/spring-file-storage
官网文档:https://spring-file-storage.xuyanwu.cn
更新日志
- 增加对 AWS S3 的支持
使用说明
配置
pom.xml
引入依赖
<dependencies>
<!-- spring-file-storage 必须要引入 -->
<dependency>
<groupId>cn.xuyanwu</groupId>
<artifactId>spring-file-storage</artifactId>
<version>0.4.0</version>
</dependency>
<!-- 华为云 OBS 不使用的情况下可以不引入 -->
<dependency>
<groupId>com.huaweicloud</groupId>
<artifactId>esdk-obs-java</artifactId>
<version>3.20.6.1</version>
</dependency>
<!-- 阿里云 OSS 不使用的情况下可以不引入 -->
<dependency>
<groupId>com.aliyun.oss</groupId>
<artifactId>aliyun-sdk-oss</artifactId>
<version>3.6.0</version>
</dependency>
<!-- 七牛云 Kodo 不使用的情况下可以不引入 -->
<dependency>
<groupId>com.qiniu</groupId>
<artifactId>qiniu-java-sdk</artifactId>
<version>7.4.0</version>
</dependency>
<!-- 腾讯云 COS 不使用的情况下可以不引入 -->
<dependency>
<groupId>com.qcloud</groupId>
<artifactId>cos_api</artifactId>
<version>5.6.38</version>
</dependency>
<!-- 百度云 BOS 不使用的情况下可以不引入 -->
<dependency>
<groupId>com.baidubce</groupId>
<artifactId>bce-java-sdk</artifactId>
<version>0.10.162</version>
</dependency>
<!-- 又拍云 USS 不使用的情况下可以不引入 -->
<dependency>
<groupId>com.upyun</groupId>
<artifactId>java-sdk</artifactId>
<version>4.2.2</version>
</dependency>
<!-- MinIO 不使用的情况下可以不引入 -->
<dependency>
<groupId>io.minio</groupId>
<artifactId>minio</artifactId>
<version>7.0.2</version>
</dependency>
<!-- AWS S3 不使用的情况下可以不引入 -->
<dependency>
<groupId>com.amazonaws</groupId>
<artifactId>aws-java-sdk-s3</artifactId>
<version>1.11.1034</version>
</dependency>
</dependencies>
application.yml
配置文件中添加以下相关配置(不使用的平台可以不配置)
spring:
file-storage: #文件存储配置
default-platform: local-1 #默认使用的存储平台
thumbnail-suffix: ".min.jpg" #缩略图后缀,例如【.min.jpg】【.png】
local: # 本地存储,不使用的情况下可以不写
- platform: local-1 # 存储平台标识
enable-storage: true #启用存储
enable-access: true #启用访问(线上请使用 Nginx 配置,效率更高)
domain: "" # 访问域名,例如:“http://127.0.0.1:8030/test/file/”,注意后面要和 path-patterns 保持一致,“/”结尾,本地存储建议使用相对路径,方便后期更换域名
base-path: D:/Temp/test/ # 存储地址
path-patterns: /test/file/** # 访问路径,开启 enable-access 后,通过此路径可以访问到上传的文件
huawei-obs: # 华为云 OBS ,不使用的情况下可以不写
- platform: huawei-obs-1 # 存储平台标识
enable-storage: false # 启用存储
access-key: ??
secret-key: ??
end-point: ??
bucket-name: ??
domain: ?? # 访问域名,注意“/”结尾,例如:http://abc.obs.com/
base-path: hy/ # 基础路径
aliyun-oss: # 阿里云 OSS ,不使用的情况下可以不写
- platform: aliyun-oss-1 # 存储平台标识
enable-storage: false # 启用存储
access-key: ??
secret-key: ??
end-point: ??
bucket-name: ??
domain: ?? # 访问域名,注意“/”结尾,例如:https://abc.oss-cn-shanghai.aliyuncs.com/
base-path: hy/ # 基础路径
qiniu-kodo: # 七牛云 kodo ,不使用的情况下可以不写
- platform: qiniu-kodo-1 # 存储平台标识
enable-storage: false # 启用存储
access-key: ??
secret-key: ??
bucket-name: ??
domain: ?? # 访问域名,注意“/”结尾,例如:http://abc.hn-bkt.clouddn.com/
base-path: base/ # 基础路径
tencent-cos: # 腾讯云 COS
- platform: tencent-cos-1 # 存储平台标识
enable-storage: true # 启用存储
secret-id: ??
secret-key: ??
region: ?? #存仓库所在地域
bucket-name: ??
domain: ?? # 访问域名,注意“/”结尾,例如:https://abc.cos.ap-nanjing.myqcloud.com/
base-path: hy/ # 基础路径
baidu-bos: # 百度云 BOS
- platform: baidu-bos-1 # 存储平台标识
enable-storage: true # 启用存储
access-key: ??
secret-key: ??
end-point: ?? # 例如 abc.fsh.bcebos.com
bucket-name: ??
domain: ?? # 访问域名,注意“/”结尾,例如:https://abc.fsh.bcebos.com/abc/
base-path: hy/ # 基础路径
upyun-uss: # 又拍云 USS
- platform: upyun-uss-1 # 存储平台标识
enable-storage: true # 启用存储
username: ??
password: ??
bucket-name: ??
domain: ?? # 访问域名,注意“/”结尾,例如:http://abc.test.upcdn.net/
base-path: hy/ # 基础路径
minio: # MinIO,由于 MinIO SDK 支持 AWS S3,其它兼容 AWS S3 协议的存储平台也都可配置在这里
- platform: minio-1 # 存储平台标识
enable-storage: true # 启用存储
access-key: ??
secret-key: ??
end-point: ??
bucket-name: ??
domain: ?? # 访问域名,注意“/”结尾,例如:http://minio.abc.com/abc/
base-path: hy/ # 基础路径
aws-s3: # AWS S3,其它兼容 AWS S3 协议的存储平台也都可配置在这里
- platform: aws-s3-1 # 存储平台标识
enable-storage: true # 启用存储
access-key: ??
secret-key: ??
region: ?? # 与 end-point 参数至少填一个
end-point: ?? # 与 region 参数至少填一个
bucket-name: ??
domain: ?? # 访问域名,注意“/”结尾,例如:https://abc.hn-bkt.clouddn.com/
base-path: s3/ # 基础路径
注意配置每个平台前面都有个-
号,通过以下方式可以配置多个
local:
- platform: local-1 # 存储平台标识
enable-storage: true
enable-access: true
domain: ""
base-path: D:/Temp/test/
path-patterns: /test/file/**
- platform: local-2 # 存储平台标识,注意这里不能重复
enable-storage: true
enable-access: true
domain: ""
base-path: D:/Temp/test2/
path-patterns: /test2/file/**
编码
在启动类上加上@EnableFileStorage
注解
@EnableFileStorage
@SpringBootApplication
public class SpringFileStorageTestApplication {
public static void main(String[] args) {
SpringApplication.run(SpringFileStorageTestApplication.class, args);
}
}
开始使用
@RestController
public class FileDetailController {
@Autowired
private FileStorageService fileStorageService;//注入实列
/**
* 上传文件,成功返回文件 url
*/
@PostMapping("/upload")
public String upload(MultipartFile file) {
FileInfo fileInfo = fileStorageService.of(file)
.setPath("upload/") //保存到相对路径下,为了方便管理,不需要可以不写
.setObjectId("0") //关联对象id,为了方便管理,不需要可以不写
.setObjectType("0") //关联对象类型,为了方便管理,不需要可以不写
.upload(); //将文件上传到对应地方
return fileInfo == null ? "上传失败!" : fileInfo.getUrl();
}
/**
* 上传图片,成功返回文件信息
* 图片处理使用的是 https://github.com/coobird/thumbnailator
*/
@PostMapping("/upload-image")
public FileInfo uploadImage(MultipartFile file) {
return fileStorageService.of(file)
.image(img -> img.size(1000,1000)) //将图片大小调整到 1000*1000
.thumbnail(th -> th.size(200,200)) //再生成一张 200*200 的缩略图
.upload();
}
/**
* 上传文件到指定存储平台,成功返回文件信息
*/
@PostMapping("/upload-platform")
public FileInfo uploadPlatform(MultipartFile file) {
return fileStorageService.of(file)
.setPlatform("aliyun-oss-1") //使用指定的存储平台
.upload();
}
}
如果还想使用除了保存文件之前的其它功能,例如删除、下载等功能可以查看详细的使用文档
GitHub:https://github.com/1171736840/spring-file-storage
Gitee:https://gitee.com/XYW1171736840/spring-file-storage
官网文档:https://spring-file-storage.xuyanwu.cn
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- Dart 2.7 发布,新增扩展方法支持
- Cocoapods 新增 CDN 支持的源码解读
- 赏色 2.6.0 发布,新增多个颜色空间支持
- PostgreSQL 14 pageinspect 新增 gist 索引支持
- Metabase 0.30.3 发布,新增中文翻译支持
- 没有 Python,微软宣布 Excel 新增 JavaScript 支持
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Just My Type
Simon Garfield / Profile Books / 2010-10-21 / GBP 14.99
What's your type? Suddenly everyone's obsessed with fonts. Whether you're enraged by Ikea's Verdanagate, want to know what the Beach Boys have in common with easy Jet or why it's okay to like Comic Sa......一起来看看 《Just My Type》 这本书的介绍吧!