diff --git a/pigx-upms/pigx-upms-api/src/main/java/com/pig4cloud/pigx/admin/api/entity/SysFile.java b/pigx-upms/pigx-upms-api/src/main/java/com/pig4cloud/pigx/admin/api/entity/SysFile.java index d8e08feb1..172e43d0d 100644 --- a/pigx-upms/pigx-upms-api/src/main/java/com/pig4cloud/pigx/admin/api/entity/SysFile.java +++ b/pigx-upms/pigx-upms-api/src/main/java/com/pig4cloud/pigx/admin/api/entity/SysFile.java @@ -23,7 +23,9 @@ import com.pig4cloud.pigx.common.core.util.TenantTable; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import lombok.EqualsAndHashCode; +import lombok.experimental.FieldNameConstants; +import java.io.Serial; import java.time.LocalDateTime; /** @@ -34,10 +36,12 @@ import java.time.LocalDateTime; */ @Data @TenantTable +@FieldNameConstants @Schema(description = "文件") @EqualsAndHashCode(callSuper = true) public class SysFile extends Model { + @Serial private static final long serialVersionUID = 1L; /** diff --git a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/SysFileServiceImpl.java b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/SysFileServiceImpl.java index 20b481c8b..7ed733d1a 100644 --- a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/SysFileServiceImpl.java +++ b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/SysFileServiceImpl.java @@ -118,16 +118,21 @@ public class SysFileServiceImpl extends ServiceImpl impl TenantContextHolder.setTenantSkip(); // 增加历史数据兼容 /admin/sys-file/local?fileName=xxx.png Map stringMap = HttpUtil.decodeParamMap(fileName, Charset.defaultCharset()); - String urlFileName = MapUtil.getStr(stringMap, "fileName"); + String urlFileName = MapUtil.getStr(stringMap, SysFile.Fields.fileName); if (StrUtil.isNotBlank(urlFileName)) { fileName = urlFileName; } SysFile sysFile = baseMapper.selectOne(Wrappers.lambdaQuery().eq(SysFile::getFileName, fileName), false); + if (Objects.isNull(sysFile)) { + log.warn("文件不存在: {}", fileName); + return; + } + try (S3Object s3Object = fileTemplate.getObject(sysFile.getBucketName(), sysFile.getDir(), fileName)) { response.setContentType("application/octet-stream; charset=UTF-8"); // 文件唯一hash - response.addHeader("Hash", sysFile.getHash()); + response.addHeader(SysFile.Fields.hash, sysFile.getHash()); response.addHeader(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=" + URLUtil.encode(sysFile.getOriginal())); IoUtil.copy(s3Object.getObjectContent(), response.getOutputStream()); } catch (Exception e) {