From e442e0f8b4724654117aa1f71cf571e662bd9bcd Mon Sep 17 00:00:00 2001 From: lihongjie0209 Date: Thu, 26 Dec 2024 22:07:26 +0800 Subject: [PATCH] =?UTF-8?q?bugfix:=20=E5=A4=84=E7=90=86=E6=96=87=E4=BB=B6?= =?UTF-8?q?=E5=90=8E=E7=BC=80=E5=90=8D=E7=A7=B0=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../coal/file/service/FileService.java | 32 ++++++++++++++++--- 1 file changed, 27 insertions(+), 5 deletions(-) diff --git a/src/main/java/cn/lihongjie/coal/file/service/FileService.java b/src/main/java/cn/lihongjie/coal/file/service/FileService.java index b0a6ccea..1272a1ab 100644 --- a/src/main/java/cn/lihongjie/coal/file/service/FileService.java +++ b/src/main/java/cn/lihongjie/coal/file/service/FileService.java @@ -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 { @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 { 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 { 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 { 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));