From a9787b0add6977dc7c115a45a47d9b797594f448 Mon Sep 17 00:00:00 2001 From: kl <632104866@QQ.com> Date: Sat, 11 Oct 2025 11:52:49 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=EF=BC=9AJSON=20=E6=96=87?= =?UTF-8?q?=E4=BB=B6=E6=A0=BC=E5=BC=8F=E5=8C=96=E9=A2=84=E8=A7=88=E5=8A=9F?= =?UTF-8?q?=E8=83=BD=20(#685)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/cn/keking/model/FileType.java | 7 +- .../java/cn/keking/service/FilePreview.java | 1 + .../service/impl/JsonFilePreviewImpl.java | 27 +++ server/src/main/resources/web/json.ftl | 214 ++++++++++++++++++ 4 files changed, 248 insertions(+), 1 deletion(-) create mode 100644 server/src/main/java/cn/keking/service/impl/JsonFilePreviewImpl.java create mode 100644 server/src/main/resources/web/json.ftl diff --git a/server/src/main/java/cn/keking/model/FileType.java b/server/src/main/java/cn/keking/model/FileType.java index 22d69979..dbe054b7 100644 --- a/server/src/main/java/cn/keking/model/FileType.java +++ b/server/src/main/java/cn/keking/model/FileType.java @@ -22,6 +22,7 @@ public enum FileType { MEDIACONVERT("mediaFilePreviewImpl"), MARKDOWN("markdownFilePreviewImpl"), XML("xmlFilePreviewImpl"), + JSON("jsonFilePreviewImpl"), CAD("cadFilePreviewImpl"), TIFF("tiffFilePreviewImpl"), OFD("ofdFilePreviewImpl"), @@ -44,12 +45,13 @@ public enum FileType { private static final String[] DCM_TYPES = {"dcm"}; private static final String[] DRAWIO_TYPES = {"drawio"}; private static final String[] XML_TYPES = {"xml","xbrl"}; + private static final String[] JSON_TYPES = {"json"}; private static final String[] TIFF_TYPES = {"tif", "tiff"}; private static final String[] OFD_TYPES = {"ofd"}; private static final String[] SVG_TYPES = {"svg"}; private static final String[] CAD_TYPES = {"dwg", "dxf", "dwf", "iges", "igs", "dwt", "dng", "ifc", "dwfx", "stl", "cf2", "plt"}; private static final String[] SSIM_TEXT_TYPES = ConfigConstants.getSimText(); - private static final String[] CODES = {"java", "c", "php", "go", "python", "py", "js", "html", "ftl", "css", "lua", "sh", "rb", "yaml", "yml", "json", "h", "cpp", "cs", "aspx", "jsp", "sql"}; + private static final String[] CODES = {"java", "c", "php", "go", "python", "py", "js", "html", "ftl", "css", "lua", "sh", "rb", "yaml", "yml", "h", "cpp", "cs", "aspx", "jsp", "sql"}; private static final String[] MEDIA_TYPES = ConfigConstants.getMedia(); public static final String[] MEDIA_CONVERT_TYPES = ConfigConstants.getConvertMedias(); private static final Map FILE_TYPE_MAPPER = new HashMap<>(); @@ -109,6 +111,9 @@ public enum FileType { for (String xml : XML_TYPES) { FILE_TYPE_MAPPER.put(xml, FileType.XML); } + for (String json : JSON_TYPES) { + FILE_TYPE_MAPPER.put(json, FileType.JSON); + } FILE_TYPE_MAPPER.put("md", FileType.MARKDOWN); FILE_TYPE_MAPPER.put("pdf", FileType.PDF); FILE_TYPE_MAPPER.put("bpmn", FileType.BPMN); diff --git a/server/src/main/java/cn/keking/service/FilePreview.java b/server/src/main/java/cn/keking/service/FilePreview.java index 388b251f..5a018b4d 100644 --- a/server/src/main/java/cn/keking/service/FilePreview.java +++ b/server/src/main/java/cn/keking/service/FilePreview.java @@ -26,6 +26,7 @@ public interface FilePreview { String CODE_FILE_PREVIEW_PAGE = "code"; String EXEL_FILE_PREVIEW_PAGE = "html"; String XML_FILE_PREVIEW_PAGE = "xml"; + String JSON_FILE_PREVIEW_PAGE = "json"; String MARKDOWN_FILE_PREVIEW_PAGE = "markdown"; String BPMN_FILE_PREVIEW_PAGE = "bpmn"; String DCM_FILE_PREVIEW_PAGE = "dcm"; diff --git a/server/src/main/java/cn/keking/service/impl/JsonFilePreviewImpl.java b/server/src/main/java/cn/keking/service/impl/JsonFilePreviewImpl.java new file mode 100644 index 00000000..57a653fd --- /dev/null +++ b/server/src/main/java/cn/keking/service/impl/JsonFilePreviewImpl.java @@ -0,0 +1,27 @@ +package cn.keking.service.impl; + +import cn.keking.model.FileAttribute; +import cn.keking.service.FilePreview; +import org.springframework.stereotype.Service; +import org.springframework.ui.Model; + +/** + * @author kl (http://kailing.pub) + * @since 2025/01/11 + * JSON 文件预览处理实现 + */ +@Service +public class JsonFilePreviewImpl implements FilePreview { + + private final SimTextFilePreviewImpl simTextFilePreview; + + public JsonFilePreviewImpl(SimTextFilePreviewImpl simTextFilePreview) { + this.simTextFilePreview = simTextFilePreview; + } + + @Override + public String filePreviewHandle(String url, Model model, FileAttribute fileAttribute) { + simTextFilePreview.filePreviewHandle(url, model, fileAttribute); + return JSON_FILE_PREVIEW_PAGE; + } +} diff --git a/server/src/main/resources/web/json.ftl b/server/src/main/resources/web/json.ftl new file mode 100644 index 00000000..efca0e1e --- /dev/null +++ b/server/src/main/resources/web/json.ftl @@ -0,0 +1,214 @@ + + + + + + JSON文件预览 + <#include "*/commonHeader.ftl"> + + + + + + + + + +
+
+
+

+ ${file.name} +

+
+ + +
+
+
+
+ +
+
+
+ + + + +