| | |
| | | import cn.iocoder.yudao.module.infra.controller.admin.file.vo.file.*; |
| | | import cn.iocoder.yudao.module.infra.dal.dataobject.file.FileDO; |
| | | import cn.iocoder.yudao.module.infra.service.file.FileService; |
| | | import com.google.common.cache.CacheLoader; |
| | | import com.google.common.util.concurrent.UncheckedExecutionException; |
| | | import io.swagger.v3.oas.annotations.Operation; |
| | | import io.swagger.v3.oas.annotations.Parameter; |
| | | import io.swagger.v3.oas.annotations.Parameters; |
| | |
| | | path = HttpUtils.decodeUrlPath(path); |
| | | |
| | | // 读取内容 |
| | | byte[] content = fileService.getFileContent(configId, path); |
| | | byte[] content; |
| | | try { |
| | | content = fileService.getFileContent(configId, path); |
| | | } catch (IllegalArgumentException | UncheckedExecutionException ex) { |
| | | // 文件配置不存在(如 configId 无效)时,按资源不存在返回 404,而不是 500 |
| | | log.warn("[getFileContent][configId({}) path({}) 文件配置不存在]", configId, path); |
| | | response.setStatus(HttpStatus.NOT_FOUND.value()); |
| | | return; |
| | | } catch (CacheLoader.InvalidCacheLoadException ex) { |
| | | // LoadingCache 的 load 返回 null 时抛出(例如历史文件记录的 configId 已被删除),同样按资源不存在处理 |
| | | log.warn("[getFileContent][configId({}) path({}) 文件配置不存在]", configId, path); |
| | | response.setStatus(HttpStatus.NOT_FOUND.value()); |
| | | return; |
| | | } |
| | | if (content == null) { |
| | | log.warn("[getFileContent][configId({}) path({}) 文件不存在]", configId, path); |
| | | response.setStatus(HttpStatus.NOT_FOUND.value()); |