diff --git a/agt-module-infra/agt-module-infra-api/src/main/java/org/agt/module/infra/api/file/FileApi.java b/agt-module-infra/agt-module-infra-api/src/main/java/org/agt/module/infra/api/file/FileApi.java index be7cf89..1144c7c 100644 --- a/agt-module-infra/agt-module-infra-api/src/main/java/org/agt/module/infra/api/file/FileApi.java +++ b/agt-module-infra/agt-module-infra-api/src/main/java/org/agt/module/infra/api/file/FileApi.java @@ -8,8 +8,10 @@ import io.swagger.v3.oas.annotations.tags.Tag; import jakarta.validation.Valid; import jakarta.validation.constraints.NotEmpty; import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestParam; @FeignClient(name = ApiConstants.NAME) // TODO 芋艿:fallbackFactory = @Tag(name = "RPC 服务 - 文件") @@ -56,4 +58,7 @@ public interface FileApi { @Operation(summary = "保存文件,并返回文件的访问路径") CommonResult createFile(@Valid @RequestBody FileCreateReqDTO createReqDTO); + @GetMapping(PREFIX + "/get") + @Operation(summary = "根据文件的访问路径返回文件内容") + CommonResult getFileContent(@Valid @RequestParam String url); } diff --git a/agt-module-infra/agt-module-infra-server/src/main/java/org/agt/module/infra/api/file/FileApiImpl.java b/agt-module-infra/agt-module-infra-server/src/main/java/org/agt/module/infra/api/file/FileApiImpl.java index 9728087..bd5df6d 100644 --- a/agt-module-infra/agt-module-infra-server/src/main/java/org/agt/module/infra/api/file/FileApiImpl.java +++ b/agt-module-infra/agt-module-infra-server/src/main/java/org/agt/module/infra/api/file/FileApiImpl.java @@ -1,8 +1,11 @@ package org.agt.module.infra.api.file; +import cn.hutool.core.util.StrUtil; import org.agt.framework.common.pojo.CommonResult; import org.agt.module.infra.api.file.dto.FileCreateReqDTO; import org.agt.module.infra.service.file.FileService; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.RestController; @@ -14,6 +17,7 @@ import static org.agt.framework.common.pojo.CommonResult.success; @Validated public class FileApiImpl implements FileApi { + private static final Logger log = LoggerFactory.getLogger(FileApiImpl.class); @Resource private FileService fileService; @@ -23,4 +27,17 @@ public class FileApiImpl implements FileApi { createReqDTO.getDirectory(), createReqDTO.getType())); } + @Override + public CommonResult getFileContent(String url) { + byte[] content = null; + try { + String path = StrUtil.subAfter(url, "/get/", false); + String configId = StrUtil.subBetween(url, "/file/", "/get/"); + content = fileService.getFileContent(Long.valueOf(configId), path); + } catch (Exception e) { + log.error("get file content error {}", url, e); + } + return success(content); + } + }