<mark>此插件，主要社区贡献人（等風來再離開）</mark>

```xml
<dependency>
    <groupId>org.noear</groupId>
    <artifactId>file-s3-solon-cloud-plugin</artifactId>
</dependency>
```

#### 1、描述

分布式扩展插件。基于 aws s3 协议适配的 solon cloud 插件。提供所有 's3' 协议文件存储服务，及本地文件服务。支持多个供应商共存（有点儿聚合的味道）。


#### 2、云端能力接口

| 接口 | 说明 | 备注 |
| -------- | -------- | -------- |
| CloudFileService             | 云端文件服务            |      |



#### 3、配置示例

```yml
solon.cloud.file.s3.file:
  default: 'demo1_bucket' #默认
  buckets:
    demo1_bucket: #所用存储桶( bucket )，必须都先配置好 //且 bucket 须手动先建好
      endpoint: 'https://obs.cn-southwest-2.myhuaweicloud.com' #通过协议，表达是否使用 https?
      regionId: ''
      accessKey: 'xxxx'
      secretKey: 'xxx'
    demo2_bucket:
      endpoint: 'D:/img' # 或 '/data/sss/files' #表示为本地（非本地的，要 http:// 或 https:// 开头）
    demo3_bucket:
      endpoint: 'http://s3.ladydaily.com'
      regionId: ''
      accessKey: 'xxxx'
      secretKey: 'xxx'
     
```

其它 s3 bucket 可选属性配置

```yml
solon.cloud.file.s3.file.buckets.demo1_bucket:
  pathStyleAccessEnabled: false #minio 一般要设为 true
  chunkedEncodingDisabled: false #一般要设为 true
  accelerateModeEnabled: false
  payloadSigningEnabled: false
  dualstackEnabled: false
  forceGlobalBucketAccessEnabled: false
  useArnRegionEnabled: false
  regionalUsEast1EndpointEnabled: false
```

#### 4、应用示例

```java
public class DemoApp {
    public void main(String[] args) {
        SolonApp app = Solon.start(DemoApp.class, args);

        String key = "test/" + Utils.guid();
        String val = "Hello world!";
        
        //上传媒体
        Result rst = CloudClient.file().put(key, new Media(val));
        
        //获取媒体，并转为字符串
        String val2 = CloudClient.file().get(key).bodyAsString();
    }
}
```


#### 5、代码演示

[https://gitee.com/noear/solon-examples/tree/main/9.Solon-Cloud/demo9042-file_aws_s3](https://gitee.com/noear/solon-examples/tree/main/9.Solon-Cloud/demo9042-file_aws_s3)