From 4d43210d733c17a3c5f8b175fcc51ed9791261ee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=AE=85=E6=88=BF?= Date: Sat, 24 Jan 2026 13:30:01 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20OSS=E4=B8=8A=E4=BC=A0=E6=96=87=E4=BB=B6U?= =?UTF-8?q?RL=E4=BD=BF=E7=94=A8transformEndpoint=E6=9B=BF=E6=8D=A2?= =?UTF-8?q?=E5=86=85=E9=83=A8endpoint?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 新增transformBladeFile()方法,在返回文件URL时将minio:9000替换为外网域名 - 修改putFile/putFileAttach等接口,返回外网可访问的URL - 修改fileLink接口,返回转换后的外链地址 Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com> --- .../resource/endpoint/OssEndpoint.java | 31 +++++++++++++++++-- 1 file changed, 28 insertions(+), 3 deletions(-) diff --git a/src/main/java/org/springblade/modules/resource/endpoint/OssEndpoint.java b/src/main/java/org/springblade/modules/resource/endpoint/OssEndpoint.java index 788ca94..69071fe 100644 --- a/src/main/java/org/springblade/modules/resource/endpoint/OssEndpoint.java +++ b/src/main/java/org/springblade/modules/resource/endpoint/OssEndpoint.java @@ -8,13 +8,16 @@ import org.springblade.core.launch.constant.AppConstant; import org.springblade.core.oss.model.BladeFile; import org.springblade.core.oss.model.OssFile; import org.springblade.core.secure.annotation.PreAuth; +import org.springblade.core.secure.utils.AuthUtil; import org.springblade.core.tenant.annotation.NonDS; import org.springblade.core.tool.api.R; import org.springblade.core.tool.constant.RoleConstant; import org.springblade.core.tool.utils.FileUtil; import org.springblade.core.tool.utils.Func; +import org.springblade.core.tool.utils.StringUtil; import org.springblade.modules.resource.builder.OssBuilder; import org.springblade.modules.resource.pojo.entity.Attach; +import org.springblade.modules.resource.pojo.entity.Oss; import org.springblade.modules.resource.service.IAttachService; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; @@ -41,6 +44,21 @@ public class OssEndpoint { */ private final IAttachService attachService; + /** + * 转换文件链接,将内部endpoint替换为外部transformEndpoint + */ + private BladeFile transformBladeFile(BladeFile bladeFile) { + Oss oss = ossBuilder.getOss(AuthUtil.getTenantId(), ""); + if (StringUtil.isNotBlank(oss.getTransformEndpoint()) && StringUtil.isNotBlank(oss.getEndpoint())) { + String link = bladeFile.getLink(); + if (StringUtil.isNotBlank(link)) { + bladeFile.setLink(link.replace(oss.getEndpoint(), oss.getTransformEndpoint())); + } + bladeFile.setDomain(oss.getTransformEndpoint()); + } + return bladeFile; + } + /** * 创建存储桶 * @@ -118,7 +136,12 @@ public class OssEndpoint { @SneakyThrows @GetMapping("/file-link") public R fileLink(@RequestParam String fileName) { - return R.data(ossBuilder.template().fileLink(fileName)); + String link = ossBuilder.template().fileLink(fileName); + Oss oss = ossBuilder.getOss(AuthUtil.getTenantId(), ""); + if (StringUtil.isNotBlank(oss.getTransformEndpoint()) && StringUtil.isNotBlank(oss.getEndpoint())) { + link = link.replace(oss.getEndpoint(), oss.getTransformEndpoint()); + } + return R.data(link); } /** @@ -131,7 +154,7 @@ public class OssEndpoint { @PostMapping("/put-file") public R putFile(@RequestParam MultipartFile file) { BladeFile bladeFile = ossBuilder.template().putFile(file.getOriginalFilename(), file.getInputStream()); - return R.data(bladeFile); + return R.data(transformBladeFile(bladeFile)); } /** @@ -145,7 +168,7 @@ public class OssEndpoint { @PostMapping("/put-file-by-name") public R putFile(@RequestParam String fileName, @RequestParam MultipartFile file) { BladeFile bladeFile = ossBuilder.template().putFile(fileName, file.getInputStream()); - return R.data(bladeFile); + return R.data(transformBladeFile(bladeFile)); } /** @@ -159,6 +182,7 @@ public class OssEndpoint { public R putFileAttach(@RequestParam MultipartFile file) { String fileName = file.getOriginalFilename(); BladeFile bladeFile = ossBuilder.template().putFile(fileName, file.getInputStream()); + bladeFile = transformBladeFile(bladeFile); Long attachId = buildAttach(fileName, file.getSize(), bladeFile); bladeFile.setAttachId(attachId); return R.data(bladeFile); @@ -175,6 +199,7 @@ public class OssEndpoint { @PostMapping("/put-file-attach-by-name") public R putFileAttach(@RequestParam String fileName, @RequestParam MultipartFile file) { BladeFile bladeFile = ossBuilder.template().putFile(fileName, file.getInputStream()); + bladeFile = transformBladeFile(bladeFile); Long attachId = buildAttach(fileName, file.getSize(), bladeFile); bladeFile.setAttachId(attachId); return R.data(bladeFile);