Commit 4386c7018cab5ad42878b21b6898f05fc92f837b

Authored by YunaiV
1 parent d9b913a7

【功能优化】全局:文件存储 S3 兼容腾讯云、火山云的 VirtualStyle 模式

yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/framework/file/core/client/s3/S3FileClient.java
@@ -37,6 +37,7 @@ public class S3FileClient extends AbstractFileClient<S3FileClientConfig> { @@ -37,6 +37,7 @@ public class S3FileClient extends AbstractFileClient<S3FileClientConfig> {
37 .region(buildRegion()) // Region 37 .region(buildRegion()) // Region
38 .credentials(config.getAccessKey(), config.getAccessSecret()) // 认证密钥 38 .credentials(config.getAccessKey(), config.getAccessSecret()) // 认证密钥
39 .build(); 39 .build();
  40 + enableVirtualStyleEndpoint();
40 } 41 }
41 42
42 /** 43 /**
@@ -86,6 +87,17 @@ public class S3FileClient extends AbstractFileClient<S3FileClientConfig> { @@ -86,6 +87,17 @@ public class S3FileClient extends AbstractFileClient<S3FileClientConfig> {
86 return null; 87 return null;
87 } 88 }
88 89
  90 + /**
  91 + * 开启 VirtualStyle 模式
  92 + */
  93 + private void enableVirtualStyleEndpoint() {
  94 + if (StrUtil.containsAll(config.getEndpoint(),
  95 + S3FileClientConfig.ENDPOINT_TENCENT, // 腾讯云 https://cloud.tencent.com/document/product/436/41284
  96 + S3FileClientConfig.ENDPOINT_VOLCES)) { // 火山云 https://www.volcengine.com/docs/6349/1288493
  97 + client.enableVirtualStyleEndpoint();
  98 + }
  99 + }
  100 +
89 @Override 101 @Override
90 public String upload(byte[] content, String path, String type) throws Exception { 102 public String upload(byte[] content, String path, String type) throws Exception {
91 // 执行上传 103 // 执行上传
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/framework/file/core/client/s3/S3FileClientConfig.java
@@ -20,6 +20,7 @@ public class S3FileClientConfig implements FileClientConfig { @@ -20,6 +20,7 @@ public class S3FileClientConfig implements FileClientConfig {
20 public static final String ENDPOINT_QINIU = "qiniucs.com"; 20 public static final String ENDPOINT_QINIU = "qiniucs.com";
21 public static final String ENDPOINT_ALIYUN = "aliyuncs.com"; 21 public static final String ENDPOINT_ALIYUN = "aliyuncs.com";
22 public static final String ENDPOINT_TENCENT = "myqcloud.com"; 22 public static final String ENDPOINT_TENCENT = "myqcloud.com";
  23 + public static final String ENDPOINT_VOLCES = "volces.com"; // 火山云(字节)
23 24
24 /** 25 /**
25 * 节点地址 26 * 节点地址