mirror of
https://gitee.com/nicefold/seewis-cloud-plus.git
synced 2026-10-14 10:02:13 +08:00
update 优化 oss 协议头拼接写法
This commit is contained in:
+32
-8
@@ -1,6 +1,5 @@
|
||||
package org.dromara.common.oss.config;
|
||||
|
||||
import cn.hutool.http.HttpUtil;
|
||||
import lombok.Builder;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
@@ -196,8 +195,8 @@ public class OssClientConfig implements Config<OssClientConfig, OssClientConfig.
|
||||
public String getDomainUrl() {
|
||||
return domain()
|
||||
// 如果已经配置了自定义域名,则优先使用域名
|
||||
// 检查携带协议头
|
||||
.filter(OssClientConfig::hasHttpHeader)
|
||||
.filter(StringUtils::isNotBlank)
|
||||
.map(domain -> BucketUrlUtil.rebuildUrlHeader(useHttps, domain.trim()))
|
||||
// 否则使用站点
|
||||
.orElseGet(this::getEndpointUrl);
|
||||
}
|
||||
@@ -226,6 +225,12 @@ public class OssClientConfig implements Config<OssClientConfig, OssClientConfig.
|
||||
return usePathStyleAccess ? BucketUrlUtil.getPathStyleBucketUrl(useHttps, url, bucket) : BucketUrlUtil.getSiteStyleBucketUrl(useHttps, url, bucket);
|
||||
}
|
||||
|
||||
/**
|
||||
* 解析 S3 Region。
|
||||
*
|
||||
* @param regionString Region 字符串
|
||||
* @return Region 对象
|
||||
*/
|
||||
private static Region parseRegion(String regionString) {
|
||||
if (StringUtils.isBlank(regionString)) {
|
||||
return Region.US_EAST_1;
|
||||
@@ -233,11 +238,23 @@ public class OssClientConfig implements Config<OssClientConfig, OssClientConfig.
|
||||
return Region.of(regionString);
|
||||
}
|
||||
|
||||
/**
|
||||
* 兼容旧配置推断是否使用路径风格访问。
|
||||
*
|
||||
* @param properties OSS 配置属性
|
||||
* @return 是否使用路径风格访问
|
||||
*/
|
||||
private static boolean resolvePathStyleAccess(OssProperties properties) {
|
||||
// 旧配置没有显式路径风格字段,只能继续按内置云厂商 endpoint 做兼容推断。
|
||||
return !StringUtils.containsAny(properties.getEndpoint(), OssConstant.CLOUD_SERVICE);
|
||||
}
|
||||
|
||||
/**
|
||||
* 解析 ACL 访问策略配置。
|
||||
*
|
||||
* @param accessPolicyString 访问策略字符串
|
||||
* @return ACL 访问策略配置
|
||||
*/
|
||||
private static AccessControlPolicyConfig resolveAccessControlPolicy(String accessPolicyString) {
|
||||
// 绝大多数云厂商不允许操作 ACL,默认禁用;当前业务只用访问策略判断是否生成预签名 URL。
|
||||
if (StringUtils.isBlank(accessPolicyString)) {
|
||||
@@ -249,22 +266,29 @@ public class OssClientConfig implements Config<OssClientConfig, OssClientConfig.
|
||||
.build();
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取用于访问对象的基础 URL。
|
||||
*
|
||||
* @return 基础 URL
|
||||
*/
|
||||
private String getAccessBaseUrl() {
|
||||
return domain()
|
||||
.filter(OssClientConfig::hasHttpHeader)
|
||||
.filter(StringUtils::isNotBlank)
|
||||
.map(String::trim)
|
||||
.orElseGet(this::getEndpoint);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取 endpoint 配置。
|
||||
*
|
||||
* @return endpoint
|
||||
*/
|
||||
private String getEndpoint() {
|
||||
return endpoint()
|
||||
.filter(s -> !s.isBlank())
|
||||
.orElseThrow(() -> S3StorageException.form("endpoint is not configured."));
|
||||
}
|
||||
|
||||
private static boolean hasHttpHeader(String url) {
|
||||
return HttpUtil.isHttp(url) || HttpUtil.isHttps(url);
|
||||
}
|
||||
|
||||
/**
|
||||
* ACL访问策略配置
|
||||
*/
|
||||
|
||||
Reference in New Issue
Block a user