fix: 修复文件管理域名未配置斜杠未后缀无法正常显示的问题

This commit is contained in:
KAI
2025-04-07 14:32:24 +08:00
parent e8aa739860
commit 6d58a3b7dd
2 changed files with 16 additions and 10 deletions

View File

@@ -20,6 +20,7 @@ import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.ClassUtil;
import cn.hutool.core.util.EscapeUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.core.util.URLUtil;
import cn.hutool.json.JSONUtil;
import com.baomidou.mybatisplus.core.incrementer.IdentifierGenerator;
import lombok.RequiredArgsConstructor;
@@ -53,16 +54,26 @@ public class FileRecorderImpl implements FileRecorder {
private final StorageMapper storageMapper;
private final IdentifierGenerator identifierGenerator;
/**
* 文件信息存储
* @param fileInfo 文件信息对象
* @return 是否保存成功
*/
@Override
public boolean save(FileInfo fileInfo) {
FileDO file = new FileDO();
Number id = identifierGenerator.nextId(fileInfo);
file.setId(id.longValue());
fileInfo.setId(id.longValue() + "");
fileInfo.setId(String.valueOf(id.longValue()));
String originalFilename = EscapeUtil.unescape(fileInfo.getOriginalFilename());
file.setName(StrUtil.contains(originalFilename, StringConstants.DOT)
? StrUtil.subBefore(originalFilename, StringConstants.DOT, true)
: originalFilename);
? StrUtil.subBefore(originalFilename, StringConstants.DOT, true)
: originalFilename);
StorageDO storage = (StorageDO)fileInfo.getAttr().get(ClassUtil.getClassName(StorageDO.class, false));
String domain = StrUtil.appendIfMissing(storage.getDomain(), StringConstants.SLASH);
// 处理fileInfo中存储的地址
fileInfo.setUrl(URLUtil.normalize(domain + fileInfo.getPath() + fileInfo.getFilename()));
fileInfo.setThUrl(URLUtil.normalize(domain + fileInfo.getPath() + fileInfo.getThFilename()));
file.setUrl(fileInfo.getUrl());
file.setSize(fileInfo.getSize());
String absPath = fileInfo.getPath();
@@ -84,7 +95,6 @@ public class FileRecorderImpl implements FileRecorder {
file.setThumbnailUrl(fileInfo.getThUrl());
file.setThumbnailSize(fileInfo.getThSize());
file.setThumbnailMetadata(JSONUtil.toJsonStr(fileInfo.getThMetadata()));
StorageDO storage = (StorageDO)fileInfo.getAttr().get(ClassUtil.getClassName(StorageDO.class, false));
file.setStorageId(storage.getId());
file.setCreateTime(DateUtil.toLocalDateTime(fileInfo.getCreateTime()));
file.setUpdateUser(UserContextHolder.getUserId());

View File

@@ -113,12 +113,8 @@ public class FileServiceImpl extends BaseServiceImpl<FileMapper, FileDO, FileRes
log.info("上传结束");
}
});
// 处理本地存储文件 URL
FileInfo fileInfo = uploadPretreatment.upload();
String domain = StrUtil.appendIfMissing(storage.getDomain(), StringConstants.SLASH);
fileInfo.setUrl(URLUtil.normalize(domain + fileInfo.getPath() + fileInfo.getFilename()));
fileInfo.setThUrl(URLUtil.normalize(domain + fileInfo.getPath() + fileInfo.getThFilename()));
return fileInfo;
return uploadPretreatment.upload();
}
@Override