|
@@ -33,9 +33,13 @@ public class OssServiceImpl implements OssService {
|
|
|
log.info("获取 OSS 上传凭证,dir: {}", dir);
|
|
log.info("获取 OSS 上传凭证,dir: {}", dir);
|
|
|
|
|
|
|
|
try {
|
|
try {
|
|
|
|
|
+ // 从 endpoint 中提取 regionId(如 oss-cn-shenzhen.aliyuncs.com -> cn-shenzhen)
|
|
|
|
|
+ String endpoint = ossConfig.getEndpoint();
|
|
|
|
|
+ String regionId = extractRegionId(endpoint);
|
|
|
|
|
+
|
|
|
// 构造 STS 请求
|
|
// 构造 STS 请求
|
|
|
DefaultProfile profile = DefaultProfile.getProfile(
|
|
DefaultProfile profile = DefaultProfile.getProfile(
|
|
|
- "",
|
|
|
|
|
|
|
+ regionId,
|
|
|
ossConfig.getAccessKeyId(),
|
|
ossConfig.getAccessKeyId(),
|
|
|
ossConfig.getAccessKeySecret()
|
|
ossConfig.getAccessKeySecret()
|
|
|
);
|
|
);
|
|
@@ -88,6 +92,25 @@ public class OssServiceImpl implements OssService {
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 从 OSS endpoint 中提取 regionId
|
|
|
|
|
+ * 例如: fuyu-catering-xxx.oss-cn-shenzhen.oss-accesspoint.aliyuncs.com -> cn-shenzhen
|
|
|
|
|
+ */
|
|
|
|
|
+ private String extractRegionId(String endpoint) {
|
|
|
|
|
+ // 匹配 oss-cn-xxx 或 oss-xxx 模式
|
|
|
|
|
+ int idx = endpoint.indexOf(".oss-");
|
|
|
|
|
+ if (idx > 0) {
|
|
|
|
|
+ String regionPart = endpoint.substring(idx + 5); // 跳过 ".oss-"
|
|
|
|
|
+ int dotIdx = regionPart.indexOf('.');
|
|
|
|
|
+ if (dotIdx > 0) {
|
|
|
|
|
+ return regionPart.substring(0, dotIdx);
|
|
|
|
|
+ }
|
|
|
|
|
+ return regionPart;
|
|
|
|
|
+ }
|
|
|
|
|
+ // 默认 cn-hangzhou
|
|
|
|
|
+ return "cn-hangzhou";
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
@Override
|
|
@Override
|
|
|
public void deleteByObjectKey(String objectKey) {
|
|
public void deleteByObjectKey(String objectKey) {
|
|
|
log.info("删除 OSS 文件,objectKey: {}", objectKey);
|
|
log.info("删除 OSS 文件,objectKey: {}", objectKey);
|