From b8c147c6419b837f2efe48a7490deacf785da7e1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B5=B5=E5=BF=A0=E6=9E=97?= <170083662@qq.com> Date: Sun, 28 Jun 2026 13:07:27 +0800 Subject: [PATCH] =?UTF-8?q?fix(AliOssController):=20=E6=A0=B9=E6=8D=AE?= =?UTF-8?q?=E6=96=87=E4=BB=B6=E7=B1=BB=E5=9E=8B=E4=BF=AE=E6=AD=A3=E7=BC=A9?= =?UTF-8?q?=E7=95=A5=E5=9B=BE=E5=92=8C=E9=A2=84=E8=A7=88=E5=9B=BE=E9=80=BB?= =?UTF-8?q?=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 获取上传文件的 contentType 以判断文件类型 - 图片类型时生成带图片处理参数的缩略图和预览图 - 视频类型时生成视频截帧的缩略图,预览图使用原始 URL - 其他类型文件直接使用原始文件 URL 作为缩略图和预览图 - 避免非图片文件拼接图片处理参数导致显示异常 --- .workbuddy/memory/2026-06-28.md | 16 +++++++++++++++ .../system/controller/AliOssController.java | 20 +++++++++++++++++-- 2 files changed, 34 insertions(+), 2 deletions(-) create mode 100644 .workbuddy/memory/2026-06-28.md diff --git a/.workbuddy/memory/2026-06-28.md b/.workbuddy/memory/2026-06-28.md new file mode 100644 index 0000000..09415d4 --- /dev/null +++ b/.workbuddy/memory/2026-06-28.md @@ -0,0 +1,16 @@ +# 2026-06-28 工作记录 + +## AliOssController 上传接口优化 + +**文件**: `src/main/java/com/gxwebsoft/common/system/controller/AliOssController.java` + +**问题**: 上传文件时,无论文件类型如何,都无条件拼接 `?x-oss-process=image/...` 图片处理参数,导致非图片文件的 thumbnail/url 无效。 + +**修改内容**: +1. 将 `FileServerUtil.getContentType(upload)` 调用移到设置 thumbnail/url 之前 +2. 根据 contentType 判断文件类型,分别处理: + - **图片** (`image/*`): 照常拼接 OSS 图片处理参数(缩略图 100x100 + 预览图 750px宽) + - **视频** (`video/*`): 使用 OSS 视频截帧 `?x-oss-process=video/snapshot,t_0,f_jpg,w_100,h_100,m_fast` 生成缩略图 + - **其他文件**: thumbnail 和 url 直接设为原始文件 URL,不加任何处理参数 + +**依赖**: 使用了已有的 `FileServerUtil.isImage(String contentType)` 方法判断图片类型。 diff --git a/src/main/java/com/gxwebsoft/common/system/controller/AliOssController.java b/src/main/java/com/gxwebsoft/common/system/controller/AliOssController.java index a0dcb68..0f624bf 100644 --- a/src/main/java/com/gxwebsoft/common/system/controller/AliOssController.java +++ b/src/main/java/com/gxwebsoft/common/system/controller/AliOssController.java @@ -155,11 +155,27 @@ public class AliOssController extends BaseController { result.setName(StrUtil.isBlank(originalName) ? upload.getName() : originalName); result.setLength(upload.length()); result.setPath(bucketDomain + path); - result.setThumbnail(bucketDomain + path + "?x-oss-process=image/resize,m_fixed,w_100,h_100/quality,Q_90"); - result.setUrl(bucketDomain + path + "?x-oss-process=image/resize,w_750/quality,Q_90"); result.setDownloadUrl(bucketDomain + path); + + // 获取文件类型 String contentType = FileServerUtil.getContentType(upload); result.setContentType(contentType); + + // 根据文件类型设置缩略图和预览图 + if (FileServerUtil.isImage(contentType)) { + // 图片:生成缩略图和压缩预览图 + result.setThumbnail(bucketDomain + path + "?x-oss-process=image/resize,m_fixed,w_100,h_100/quality,Q_90"); + result.setUrl(bucketDomain + path + "?x-oss-process=image/resize,w_750/quality,Q_90"); + } else if (contentType != null && contentType.startsWith("video/")) { + // 视频:使用OSS视频截帧生成缩略图(取首帧) + result.setThumbnail(bucketDomain + path + "?x-oss-process=video/snapshot,t_0,f_jpg,w_100,h_100,m_fast"); + result.setUrl(bucketDomain + path); + } else { + // 非图片/视频:直接使用原始URL + result.setThumbnail(bucketDomain + path); + result.setUrl(bucketDomain + path); + } + result.setTenantId(Integer.valueOf(tenantId)); upload.delete(); fileRecordService.save(result);