fix(oss): 修复MinIO SDK配置避免region空指针异常
- 调整MinIO客户端配置,使用 OSSClientBuilder 的链式调用构建 - 明确指定region为"us-east-1",防止自定义域名推导region失败导致NPE - 保持SignatureVersion为V4,启用从endpoint提取配置信息以支持path-style访问 - 统一AliOssController和FileRecordServiceImpl中的MinIO配置逻辑
This commit is contained in:
@@ -121,11 +121,16 @@ public class AliOssController extends BaseController {
|
|||||||
OSS ossClient;
|
OSS ossClient;
|
||||||
if ("minio".equals(uploadMethod)) {
|
if ("minio".equals(uploadMethod)) {
|
||||||
ClientBuilderConfiguration minioConfig = new ClientBuilderConfiguration();
|
ClientBuilderConfiguration minioConfig = new ClientBuilderConfiguration();
|
||||||
// 3.17 已移除 setPathStyleAccess;用 setExtractSettingFromEndpoint 让 SDK 对 MinIO 这类
|
// MinIO 兼容 S3:V4 签名 + path-style。自定义域名无法从 endpoint 推导 region,
|
||||||
// 非阿里云 endpoint 自动按 path-style 访问,并从 endpoint 推导 region
|
// 必须显式指定(MinIO 默认 us-east-1),否则 OSSV4Signer.getRegion() 为 null 触发 NPE。
|
||||||
minioConfig.setSignatureVersion(SignVersion.V4);
|
minioConfig.setSignatureVersion(SignVersion.V4);
|
||||||
minioConfig.setExtractSettingFromEndpoint(true);
|
minioConfig.setExtractSettingFromEndpoint(true);
|
||||||
ossClient = new OSSClientBuilder().build(endpoint, credentialsProvider, minioConfig);
|
ossClient = OSSClientBuilder.create()
|
||||||
|
.endpoint(endpoint)
|
||||||
|
.credentialsProvider(credentialsProvider)
|
||||||
|
.clientConfiguration(minioConfig)
|
||||||
|
.region("us-east-1")
|
||||||
|
.build();
|
||||||
} else {
|
} else {
|
||||||
ossClient = new OSSClientBuilder().build(endpoint, credentialsProvider);
|
ossClient = new OSSClientBuilder().build(endpoint, credentialsProvider);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -101,11 +101,16 @@ public class FileRecordServiceImpl extends ServiceImpl<FileRecordMapper, FileRec
|
|||||||
OSS ossClient;
|
OSS ossClient;
|
||||||
if ("minio".equals(uploadMethod)) {
|
if ("minio".equals(uploadMethod)) {
|
||||||
ClientBuilderConfiguration minioConfig = new ClientBuilderConfiguration();
|
ClientBuilderConfiguration minioConfig = new ClientBuilderConfiguration();
|
||||||
// 3.17 已移除 setPathStyleAccess;用 setExtractSettingFromEndpoint 让 SDK 对 MinIO 这类
|
// MinIO 兼容 S3:V4 签名 + path-style。自定义域名无法从 endpoint 推导 region,
|
||||||
// 非阿里云 endpoint 自动按 path-style 访问,并从 endpoint 推导 region
|
// 必须显式指定(MinIO 默认 us-east-1),否则 OSSV4Signer.getRegion() 为 null 触发 NPE。
|
||||||
minioConfig.setSignatureVersion(SignVersion.V4);
|
minioConfig.setSignatureVersion(SignVersion.V4);
|
||||||
minioConfig.setExtractSettingFromEndpoint(true);
|
minioConfig.setExtractSettingFromEndpoint(true);
|
||||||
ossClient = new OSSClientBuilder().build(endpoint, credentialsProvider, minioConfig);
|
ossClient = OSSClientBuilder.create()
|
||||||
|
.endpoint(endpoint)
|
||||||
|
.credentialsProvider(credentialsProvider)
|
||||||
|
.clientConfiguration(minioConfig)
|
||||||
|
.region("us-east-1")
|
||||||
|
.build();
|
||||||
} else {
|
} else {
|
||||||
ossClient = new OSSClientBuilder().build(endpoint, credentialsProvider);
|
ossClient = new OSSClientBuilder().build(endpoint, credentialsProvider);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user