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);