bugfix: 处理文件后缀名称的问题

This commit is contained in:
2024-12-26 22:07:26 +08:00
parent 4603b6003f
commit e442e0f8b4

View File

@@ -25,6 +25,7 @@ import lombok.extern.slf4j.Slf4j;
import org.apache.commons.io.FilenameUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.tika.Tika;
import org.apache.tika.config.TikaConfig;
import org.jetbrains.annotations.NotNull;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
@@ -55,6 +56,7 @@ public class FileService extends BaseService<FileEntity, FileRepository> {
@Autowired private FileMapper mapper;
@Autowired private ConversionService conversionService;
private final Tika tika = new Tika();
TikaConfig config = TikaConfig.getDefaultConfig();
@Value("${spring.profiles.active}")
private String activateProfile;
@@ -112,7 +114,8 @@ public class FileService extends BaseService<FileEntity, FileRepository> {
String sortKey,
String code,
String remarks,
String url, String base64) {
String url,
String base64) {
long size = 0;
InputStream fis = null;
@@ -127,10 +130,13 @@ public class FileService extends BaseService<FileEntity, FileRepository> {
size = out.size();
} else if (StringUtils.isNotBlank(base64)) {
fis = new ByteArrayInputStream(Base64.getDecoder().decode(base64.replace("data:image/png;base64,", "")));
fis =
new ByteArrayInputStream(
Base64.getDecoder()
.decode(base64.replace("data:image/png;base64,", "")));
size = fis.available();
}else {
} else {
throw new BizException("文件为空");
}
@@ -153,12 +159,28 @@ public class FileService extends BaseService<FileEntity, FileRepository> {
Ctx.currentUser().getOrganizationId(),
StringUtils.defaultIfBlank(dir, "public")));
InputStream inputStream = fis;
fileEntity.setObjectId(
UUID.randomUUID() + "." + FilenameUtils.getExtension(name.replace(":", "_")));
String extension = FilenameUtils.getExtension(name.replace(":", "_"));
try (inputStream) {
fileEntity.setMimeType(tika.detect(inputStream));
}
// if file ext is empty, get from mime type
try {
if (StringUtils.isBlank(extension)) {
extension =
config.getMimeRepository()
.getRegisteredMimeType(fileEntity.getMimeType())
.getExtension().replace(".", "");
}
} catch (Exception e) {
log.warn("获取文件扩展名失败", e);
}
fileEntity.setObjectId(UUID.randomUUID() + "." + extension);
String objectKey = getObjectKey(fileEntity);
fileEntity.setPublicUrl(uploadToOSS(objectKey, fis));