mirror of
http://git.pig4cloud.com/pig/pigx.git
synced 2026-11-08 04:39:00 +08:00
feat(file): 增强文件下载功能与实体定义
- 使用SysFile.Fields常量替代硬编码字符串字段名 - 增加文件不存在时的日志警告与提前返回处理 - 为SysFile实体添加FieldNameConstants注解与Serial标记 - 优化文件下载响应头设置与异常处理逻辑
This commit is contained in:
1 parent
c8edf16536
commit
809b17da68
2 files changed
+11
-2
No files matched your search
@@ -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<SysFile> {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
|
||||
+7
-2
@@ -118,16 +118,21 @@ public class SysFileServiceImpl extends ServiceImpl<SysFileMapper, SysFile> impl
|
||||
TenantContextHolder.setTenantSkip();
|
||||
// 增加历史数据兼容 /admin/sys-file/local?fileName=xxx.png
|
||||
Map<String, String> 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.<SysFile>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) {
|
||||
|
||||
Reference in new issue
Block a user