From 556cc93f14cb519ec0887294f2b83b438aa95d73 Mon Sep 17 00:00:00 2001 From: xiaoen <3219405547@qq.com> Date: Tue, 17 Mar 2026 18:57:30 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E7=9F=A5=E8=AF=86?= =?UTF-8?q?=E5=BA=93=E9=99=84=E4=BB=B6=E4=B8=8A=E4=BC=A0=E4=B9=B1=E7=A0=81?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../core/utils/file/ContentTypeUtil.java | 61 +++++++++++++++++++ .../service/impl/SysOssServiceImpl.java | 3 +- 2 files changed, 63 insertions(+), 1 deletion(-) create mode 100644 ruoyi-common/ruoyi-common-core/src/main/java/org/ruoyi/common/core/utils/file/ContentTypeUtil.java diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/org/ruoyi/common/core/utils/file/ContentTypeUtil.java b/ruoyi-common/ruoyi-common-core/src/main/java/org/ruoyi/common/core/utils/file/ContentTypeUtil.java new file mode 100644 index 00000000..59677502 --- /dev/null +++ b/ruoyi-common/ruoyi-common-core/src/main/java/org/ruoyi/common/core/utils/file/ContentTypeUtil.java @@ -0,0 +1,61 @@ +package org.ruoyi.common.core.utils.file; + +import java.util.HashMap; +import java.util.Map; + +/** + * @Author: xiaoen + * @Description: Content-Type 映射工具 + * @Date: Created in 18:50 2026/3/17 + */ +public class ContentTypeUtil { + + private static final Map CONTENT_TYPE_MAP = new HashMap<>(); + + static { + // 文本文件 + CONTENT_TYPE_MAP.put(".txt", "text/plain; charset=UTF-8"); + CONTENT_TYPE_MAP.put(".html", "text/html; charset=UTF-8"); + CONTENT_TYPE_MAP.put(".htm", "text/html; charset=UTF-8"); + CONTENT_TYPE_MAP.put(".css", "text/css; charset=UTF-8"); + CONTENT_TYPE_MAP.put(".js", "application/javascript; charset=UTF-8"); + CONTENT_TYPE_MAP.put(".json", "application/json; charset=UTF-8"); + CONTENT_TYPE_MAP.put(".xml", "application/xml; charset=UTF-8"); + CONTENT_TYPE_MAP.put(".csv", "text/csv; charset=UTF-8"); + + // 图片文件 + CONTENT_TYPE_MAP.put(".jpg", "image/jpeg"); + CONTENT_TYPE_MAP.put(".jpeg", "image/jpeg"); + CONTENT_TYPE_MAP.put(".png", "image/png"); + CONTENT_TYPE_MAP.put(".gif", "image/gif"); + CONTENT_TYPE_MAP.put(".bmp", "image/bmp"); + CONTENT_TYPE_MAP.put(".webp", "image/webp"); + CONTENT_TYPE_MAP.put(".svg", "image/svg+xml"); + + // 应用文件 + CONTENT_TYPE_MAP.put(".pdf", "application/pdf"); + CONTENT_TYPE_MAP.put(".doc", "application/msword"); + CONTENT_TYPE_MAP.put(".docx", "application/vnd.openxmlformats-officedocument.wordprocessingml.document"); + CONTENT_TYPE_MAP.put(".xls", "application/vnd.ms-excel"); + CONTENT_TYPE_MAP.put(".xlsx", "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"); + CONTENT_TYPE_MAP.put(".ppt", "application/vnd.ms-powerpoint"); + CONTENT_TYPE_MAP.put(".pptx", "application/vnd.openxmlformats-officedocument.presentationml.presentation"); + + // 其他 + CONTENT_TYPE_MAP.put(".mp3", "audio/mpeg"); + CONTENT_TYPE_MAP.put(".mp4", "video/mp4"); + CONTENT_TYPE_MAP.put(".zip", "application/zip"); + CONTENT_TYPE_MAP.put(".rar", "application/x-rar-compressed"); + } + + /** + * 根据后缀返回对应的 content-type + * @param suffix + * @param defaultContentType + * @return + */ + public static String getContentType(String suffix, String defaultContentType) { + String contentType = CONTENT_TYPE_MAP.get(suffix.toLowerCase()); + return contentType != null ? contentType : defaultContentType; + } +} diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/impl/SysOssServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/impl/SysOssServiceImpl.java index 8ca967ea..61accdb8 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/impl/SysOssServiceImpl.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/impl/SysOssServiceImpl.java @@ -17,6 +17,7 @@ import org.ruoyi.common.core.utils.MapstructUtils; import org.ruoyi.common.core.utils.SpringUtils; import org.ruoyi.common.core.utils.StreamUtils; import org.ruoyi.common.core.utils.StringUtils; +import org.ruoyi.common.core.utils.file.ContentTypeUtil; import org.ruoyi.common.core.utils.file.FileUtils; import org.ruoyi.common.json.utils.JsonUtils; import org.ruoyi.common.mybatis.core.page.PageQuery; @@ -218,7 +219,7 @@ public class SysOssServiceImpl implements ISysOssService, OssService { OssClient storage = OssFactory.instance(); UploadResult uploadResult; try { - uploadResult = storage.uploadSuffix(file.getBytes(), suffix, file.getContentType()); + uploadResult = storage.uploadSuffix(file.getBytes(), suffix, ContentTypeUtil.getContentType(suffix, file.getContentType())); } catch (IOException e) { throw new ServiceException(e.getMessage()); }