From 5d9e5827a73349692c5d832eb8b89c85f5a19cf6 Mon Sep 17 00:00:00 2001 From: guideuhome <139778378+guideuhome@users.noreply.github.com> Date: Sat, 16 May 2026 16:13:44 +0800 Subject: [PATCH] fix: correct HEIC/HEIF/AVIF preview URL for local/FTP files - Use currentUrl from model instead of fileAttribute.getName() for file/ftp URLs. After super.filePreviewHandle() downloads the file, the actual path is stored as currentUrl in the model. Using just the filename causes the heic.ftl template to construct incorrect image URLs. - Add avif suffix to HEIC template routing. The wasm_heif.js decoder in static/heic/src/worker.js already supports AVIF decoding, and FileType.java already lists avif in PICTURE_TYPES. This ensures AVIF files also benefit from client-side conversion. Closes #664 --- .../java/cn/keking/service/impl/PictureFilePreviewImpl.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/server/src/main/java/cn/keking/service/impl/PictureFilePreviewImpl.java b/server/src/main/java/cn/keking/service/impl/PictureFilePreviewImpl.java index ff77438ac..f226d39df 100644 --- a/server/src/main/java/cn/keking/service/impl/PictureFilePreviewImpl.java +++ b/server/src/main/java/cn/keking/service/impl/PictureFilePreviewImpl.java @@ -39,13 +39,15 @@ public String filePreviewHandle(String url, Model model, FileAttribute fileAttri // 不是http开头,浏览器不能直接访问,需下载到本地 super.filePreviewHandle(url, model, fileAttribute); if ( url.toLowerCase().startsWith("file") || url.toLowerCase().startsWith("ftp")) { - model.addAttribute("imgUrls", fileAttribute.getName()); + // 使用下载后的相对路径,以便模板正确构造图片访问URL + String currentUrl = (String) model.getAttribute("currentUrl"); + model.addAttribute("imgUrls", currentUrl != null ? currentUrl : fileAttribute.getName()); }else { model.addAttribute("imgUrls", url); } } - if(suffix.equalsIgnoreCase("heic")||suffix.equalsIgnoreCase("heif")){ + if(suffix.equalsIgnoreCase("heic")||suffix.equalsIgnoreCase("heif")||suffix.equalsIgnoreCase("avif")){ return HEIC_FILE_PREVIEW_PAGE; }else { return PICTURE_FILE_PREVIEW_PAGE;