From d332dbed6ac0495c4e62e469558618dc0eb29c57 Mon Sep 17 00:00:00 2001 From: wylovely <2016688030@qq.com> Date: Thu, 24 Sep 2026 15:27:10 +0800 Subject: [PATCH] fix(#787): derive Viewer title from data-original-url so image preview shows the filename (was empty for
) --- server/src/main/resources/web/picture.ftl | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/server/src/main/resources/web/picture.ftl b/server/src/main/resources/web/picture.ftl index 648430a3..e6b3905d 100644 --- a/server/src/main/resources/web/picture.ftl +++ b/server/src/main/resources/web/picture.ftl @@ -58,6 +58,17 @@ }); } + // 从原始图片 URL 提取文件名(优先用 data-original-url,避免受反代 / CORS 代理 URL 影响) + function getImageNameFromOriginalUrl(imageElement) { + var originalUrl = imageElement.getAttribute('data-original-url') || ''; + // 去除查询串与锚点 + var noQuery = originalUrl.split('?')[0].split('#')[0]; + // 取路径最后一段作为文件名(兼容 / 与 \) + var lastSep = Math.max(noQuery.lastIndexOf('/'), noQuery.lastIndexOf('\\')); + var name = lastSep >= 0 ? noQuery.substring(lastSep + 1) : noQuery; + return name || 'image'; + } + // 初始化图片查看器 function initImageViewer() { var viewer = new Viewer(document.getElementById('image'), { @@ -66,6 +77,11 @@ button: false, backdrop: false, loop: true, + // #787:
没有 DOM 的 src 属性,Viewer.js 用 image.src 取标题会得到 undefined; + // 改为从 data-original-url 派生标题文件名(该属性在元素克隆时会被保留) + title: function (image, imageData) { + return getImageNameFromOriginalUrl(image); + } }); viewer.view(0); // 0 是图片的索引,如果你想点击第一张图片,索引为 0 }