From 18696f91a649480653d5210de5beda4ca1b2d7f7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B5=B5=E5=BF=A0=E6=9E=97?= <170083662@qq.com> Date: Fri, 7 Aug 2026 02:54:21 +0800 Subject: [PATCH] =?UTF-8?q?fix(oss):=20=E4=BF=AE=E5=A4=8DMinIO=20SDK?= =?UTF-8?q?=E9=85=8D=E7=BD=AE=E9=81=BF=E5=85=8Dregion=E7=A9=BA=E6=8C=87?= =?UTF-8?q?=E9=92=88=E5=BC=82=E5=B8=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 调整MinIO客户端配置,使用 OSSClientBuilder 的链式调用构建 - 明确指定region为"us-east-1",防止自定义域名推导region失败导致NPE - 保持SignatureVersion为V4,启用从endpoint提取配置信息以支持path-style访问 - 统一AliOssController和FileRecordServiceImpl中的MinIO配置逻辑 --- .../common/system/controller/AliOssController.java | 11 ++++++++--- .../system/service/impl/FileRecordServiceImpl.java | 11 ++++++++--- 2 files changed, 16 insertions(+), 6 deletions(-) diff --git a/src/main/java/com/gxwebsoft/common/system/controller/AliOssController.java b/src/main/java/com/gxwebsoft/common/system/controller/AliOssController.java index 825d347..5b3e1bc 100644 --- a/src/main/java/com/gxwebsoft/common/system/controller/AliOssController.java +++ b/src/main/java/com/gxwebsoft/common/system/controller/AliOssController.java @@ -121,11 +121,16 @@ public class AliOssController extends BaseController { OSS ossClient; if ("minio".equals(uploadMethod)) { ClientBuilderConfiguration minioConfig = new ClientBuilderConfiguration(); - // 3.17 已移除 setPathStyleAccess;用 setExtractSettingFromEndpoint 让 SDK 对 MinIO 这类 - // 非阿里云 endpoint 自动按 path-style 访问,并从 endpoint 推导 region + // MinIO 兼容 S3:V4 签名 + path-style。自定义域名无法从 endpoint 推导 region, + // 必须显式指定(MinIO 默认 us-east-1),否则 OSSV4Signer.getRegion() 为 null 触发 NPE。 minioConfig.setSignatureVersion(SignVersion.V4); 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 { ossClient = new OSSClientBuilder().build(endpoint, credentialsProvider); } diff --git a/src/main/java/com/gxwebsoft/common/system/service/impl/FileRecordServiceImpl.java b/src/main/java/com/gxwebsoft/common/system/service/impl/FileRecordServiceImpl.java index d96ca7f..8c915e5 100644 --- a/src/main/java/com/gxwebsoft/common/system/service/impl/FileRecordServiceImpl.java +++ b/src/main/java/com/gxwebsoft/common/system/service/impl/FileRecordServiceImpl.java @@ -101,11 +101,16 @@ public class FileRecordServiceImpl extends ServiceImpl