Skip to content

Commit

Permalink
Merge pull request #23 from 1171736840/dev
Browse files Browse the repository at this point in the history
Dev
  • Loading branch information
1171736840 authored Jun 9, 2021
2 parents c37ef71 + 56dab03 commit a9b3566
Show file tree
Hide file tree
Showing 12 changed files with 311 additions and 15 deletions.
16 changes: 12 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,9 +23,14 @@
</p>

### 简介
在 SpringBoot 中通过简单的方式将文件存储到本地、阿里云OSS、华为云OBS、七牛云Kodo、腾讯云COS、百度云 BOS、又拍云USS、MinIO
在 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 协议的平台

后续即将支持 亚马逊S3、谷歌云存储、FTP、SFTP、WebDAV、Samba、NFS
查看 [所有支持的存储平台](https://spring-file-storage.xuyanwu.cn/#/存储平台)

后续即将支持 谷歌云存储、FTP、SFTP、WebDAV、Samba、NFS

`spring-file-storage` 模块是本体。

Expand All @@ -35,11 +40,14 @@ GitHub:https://github.com/1171736840/spring-file-storage
<br />
Gitee:https://gitee.com/XYW1171736840/spring-file-storage


### 文档
阅读 [文档](https://spring-file-storage.xuyanwu.cn) 开始使用!

### 捐赠
如果你觉得这个项目不错,可以在右上角点个 Star 或捐赠请作者吃包辣条~,在此表示感谢^_^。

点击以下链接,将页面拉到最下方点击“捐赠”即可。

[Gitee上捐赠](https://gitee.com/XYW1171736840/spring-file-storage)


阅读 [文档](https://spring-file-storage.xuyanwu.cn) 开始使用!
15 changes: 12 additions & 3 deletions docs/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,18 +23,27 @@
</p>

# 简介
在 SpringBoot 中通过简单的方式将文件存储到本地、阿里云OSS、华为云OBS、七牛云Kodo、腾讯云COS、百度云 BOS、又拍云USS、MinIO
在 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 协议的平台

后续即将支持 亚马逊S3、谷歌云存储、FTP、SFTP、WebDAV、Samba、NFS
查看 [所有支持的存储平台](存储平台)

后续即将支持 谷歌云存储、FTP、SFTP、WebDAV、Samba、NFS

GitHub:https://github.com/1171736840/spring-file-storage
<br />
Gitee:https://gitee.com/XYW1171736840/spring-file-storage

# 文档
阅读 [快速入门](快速入门) 开始使用吧!

# 捐赠
如果你觉得这个项目不错,可以点个 Star 或捐赠请作者吃包辣条~,在此表示感谢^_^。

点击以下链接,将页面拉到最下方点击“捐赠”即可。

[Gitee上捐赠](https://gitee.com/XYW1171736840/spring-file-storage)

阅读 [快速入门](快速入门) 开始使用吧!

31 changes: 31 additions & 0 deletions docs/存储平台.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,37 @@

目前支持多种存储平台,你也可以根据需要自行扩展

## 支持的存储平台

| 平台 | 官方 SDK | AWS S3 SDK | S3 兼容说明 |
| ------- | ------- | ------- | ------- |
| 本地 | - | - | - |
| AWS S3 ||| - |
| MinIO ||| [查看](http://docs.minio.org.cn/docs/master/java-client-quickstart-guide) |
| 阿里云 OSS ||| [查看](https://help.aliyun.com/document_detail/64919.html#title-cds-fai-yxp) |
| 华为云 OBS ||| [查看](https://support.huaweicloud.com/topic/74416-1-O-obsduixiangcunchufuwus3xieyi) |
| 七牛云 Kodo ||| [查看](https://developer.qiniu.com/kodo/4086/aws-s3-compatible) |
| 腾讯云 COS ||| [查看](https://cloud.tencent.com/document/product/436/37421) |
| 百度云 BOS ||| [查看](https://cloud.baidu.com/doc/BOS/s/Fjwvyq9xo) |
| 又拍云 USS || × | - |
| 金山云 KS3 | × || [查看](https://docs.ksyun.com/documents/959) |
| 美团云 MSS | × || [查看](https://www.mtyun.com/doc/products/storage/mss/zhu-yao-gong-neng#兼容%20AWS%20S3%20协议) |
| 京东云 OSS | × || [查看](https://docs.jdcloud.com/cn/object-storage-service/compatibility-api-overview) |
| 天翼云 OOS | × || [查看](https://www.ctyun.cn/h5/help2/10000101/10001711) |
| 移动云 EOS | × || [查看](https://ecloud.10086.cn/op-help-center/doc/article/24569) |
| 沃云 OSS | × || [查看](https://support.woyun.cn/document.html?id=133&arcid=127) |
| 网易数帆 NOS | × || [查看](https://www.163yun.com/help/documents/89796157866430464) |
| Ucloud US3 | × || [查看](https://docs.ucloud.cn/ufile/s3/s3_introduction) |
| 青云 QingStor | × || [查看](https://docs.qingcloud.com/qingstor/s3/) |
| 平安云 OBS | × || [查看](https://yun.pingan.com/ssr/help/storage/obs/OBS_SDK_.Java_SDK_) |
| 首云 OSS | × || [查看](http://www.capitalonline.net.cn/zh-cn/service/distribution/oss-new/#product-adv) |
| IBM COS | × || [查看](https://cloud.ibm.com/docs/cloud-object-storage?topic=cloud-object-storage-compatibility-api) |
| 其它兼容 S3 协议的平台 | × || - |

如果想通 AWS S3 SDK 使用对应的存储平台,直接将配置写在 ASW S3 中。

> MinIO SDK 支持所有兼容 AWS S3 的平台,所以也可以使用 MinIO SDK 代替 AWS S3 SDK ,将配置写在 MinIO 中。
## 自定义存储平台

想要自定义存储平台就要实现 `FileStorage` 这个接口,并进行实例化,注意返回的 bean 是个 list
Expand Down
23 changes: 21 additions & 2 deletions docs/快速入门.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
<dependency>
<groupId>cn.xuyanwu</groupId>
<artifactId>spring-file-storage</artifactId>
<version>0.3.0</version>
<version>0.4.0</version>
</dependency>

<!-- 华为云 OBS 不使用的情况下可以不引入 -->
Expand Down Expand Up @@ -62,6 +62,13 @@
<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>
```

Expand Down Expand Up @@ -131,7 +138,7 @@ spring:
bucket-name: ??
domain: ?? # 访问域名,注意“/”结尾,例如:http://abc.test.upcdn.net/
base-path: hy/ # 基础路径
minio: # MinIO
minio: # MinIO,由于 MinIO SDK 支持 AWS S3,其它兼容 AWS S3 协议的存储平台也都可配置在这里
- platform: minio-1 # 存储平台标识
enable-storage: true # 启用存储
access-key: ??
Expand All @@ -140,6 +147,16 @@ spring:
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/ # 基础路径
```
注意配置每个平台前面都有个`-`号,通过以下方式可以配置多个
Expand All @@ -160,6 +177,8 @@ local:
path-patterns: /test2/file/**
```

查看 [所有支持的存储平台](存储平台)

## 编码

在启动类上加上`@EnableFileStorage`注解
Expand Down
5 changes: 5 additions & 0 deletions docs/更新记录.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,9 @@
# 更新记录

## 0.4.0
2021-06-09
- 增加对 AWS S3 的支持

## 0.3.0
2021-06-04
- 增加官网文档
Expand Down
2 changes: 1 addition & 1 deletion pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
<groupId>cn.xuyanwu</groupId>
<artifactId>spring-file-storage-parent</artifactId>
<packaging>pom</packaging>
<version>0.3.0</version>
<version>0.4.0</version>

<name>spring-file-storage-parent</name>
<description>A File Storage Service</description>
Expand Down
11 changes: 9 additions & 2 deletions spring-file-storage-test/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@

<groupId>cn.xuyanwu</groupId>
<artifactId>spring-file-storage-test</artifactId>
<version>0.3.0</version>
<version>0.4.0</version>
<name>spring-file-storage-test</name>
<description>spring-file-storage 的测试和演示模块</description>

Expand All @@ -22,6 +22,13 @@

<dependencies>

<!-- AWS S3 -->
<dependency>
<groupId>com.amazonaws</groupId>
<artifactId>aws-java-sdk-s3</artifactId>
<version>1.11.1034</version>
</dependency>

<!-- MinIO -->
<dependency>
<groupId>io.minio</groupId>
Expand Down Expand Up @@ -81,7 +88,7 @@
<dependency>
<groupId>cn.xuyanwu</groupId>
<artifactId>spring-file-storage</artifactId>
<version>0.3.0</version>
<version>0.4.0</version>
</dependency>

<dependency>
Expand Down
12 changes: 11 additions & 1 deletion spring-file-storage-test/src/main/resources/application.yml
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,7 @@ spring:
bucket-name: ??
domain: ?? # 访问域名,注意“/”结尾,例如:http://abc.test.upcdn.net/
base-path: hy/ # 基础路径
minio: # MinIO
minio: # MinIO,由于 MinIO SDK 支持 AWS S3,其它兼容 AWS S3 协议的存储平台也都可配置在这里
- platform: minio-1 # 存储平台标识
enable-storage: true # 启用存储
access-key: ??
Expand All @@ -81,3 +81,13 @@ spring:
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/ # 基础路径
12 changes: 11 additions & 1 deletion spring-file-storage/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -5,14 +5,24 @@
<parent>
<artifactId>spring-file-storage-parent</artifactId>
<groupId>cn.xuyanwu</groupId>
<version>0.3.0</version>
<version>0.4.0</version>
</parent>
<modelVersion>4.0.0</modelVersion>

<artifactId>spring-file-storage</artifactId>

<dependencies>

<!-- AWS S3 -->
<dependency>
<groupId>com.amazonaws</groupId>
<artifactId>aws-java-sdk-s3</artifactId>
<version>1.11.1034</version>
<scope>provided</scope>
<optional>true</optional>
</dependency>


<!-- MinIO -->
<dependency>
<groupId>io.minio</groupId>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -206,6 +206,28 @@ public List<MinIOFileStorage> minioFileStorageList() {
}).filter(Objects::nonNull).collect(Collectors.toList());
}

/**
* AWS 存储 Bean
*/
@Bean
@ConditionalOnClass(name = "com.amazonaws.services.s3.AmazonS3")
public List<AwsS3FileStorage> amazonS3FileStorageList() {
return properties.getAwsS3().stream().map(s3 -> {
if (!s3.getEnableStorage()) return null;
log.info("加载存储平台:{}",s3.getPlatform());
AwsS3FileStorage storage = new AwsS3FileStorage();
storage.setPlatform(s3.getPlatform());
storage.setAccessKey(s3.getAccessKey());
storage.setSecretKey(s3.getSecretKey());
storage.setRegion(s3.getRegion());
storage.setEndpoint(s3.getEndpoint());
storage.setBucketName(s3.getBucketName());
storage.setDomain(s3.getDomain());
storage.setBasePath(s3.getBasePath());
return storage;
}).filter(Objects::nonNull).collect(Collectors.toList());
}

/**
* 当没有找到 FileRecorder 时使用默认的 FileRecorder
*/
Expand Down Expand Up @@ -265,6 +287,9 @@ public void initDetect() {
if (CollUtil.isNotEmpty(properties.getMinio()) && doesNotExistClass("io.minio.MinioClient")) {
log.warn(template," MinIO ");
}
if (CollUtil.isNotEmpty(properties.getAwsS3()) && doesNotExistClass("com.amazonaws.services.s3.AmazonS3")) {
log.warn(template," AmazonS3 ");
}
}

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -51,10 +51,15 @@ public class FileStorageProperties {
*/
private List<UpyunUSS> upyunUSS = new ArrayList<>();
/**
* 又拍云 USS
* MinIO USS
*/
private List<MinIO> minio = new ArrayList<>();

/**
* AWS S3
*/
private List<AwsS3> awsS3 = new ArrayList<>();

/**
* 本地存储
*/
Expand Down Expand Up @@ -273,5 +278,33 @@ public static class MinIO {
private String basePath = "";
}

/**
* AWS S3
*/
@Data
public static class AwsS3 {
private String accessKey;
private String secretKey;
private String region;
private String endpoint;
private String bucketName;
/**
* 访问域名
*/
private String domain = "";
/**
* 启用存储
*/
private Boolean enableStorage = false;
/**
* 存储平台
*/
private String platform = "";
/**
* 基础路径
*/
private String basePath = "";
}


}
Loading

0 comments on commit a9b3566

Please sign in to comment.