From 818207d6c9d1f2dc4bb95ecc5f3a902d488e9e6d Mon Sep 17 00:00:00 2001 From: Timi Date: Tue, 8 Sep 2026 18:09:31 +0800 Subject: [PATCH] fix FileController --- .../api/modules/system/bean/ServerFile.java | 2 +- .../system/bean/SystemFileSetting.java | 21 +++++++++++++++++++ .../system/controller/FileController.java | 13 ++++-------- .../implement/FileServiceImplement.java | 5 ++--- 4 files changed, 28 insertions(+), 13 deletions(-) create mode 100644 src/main/java/com/imyeyu/api/modules/system/bean/SystemFileSetting.java diff --git a/src/main/java/com/imyeyu/api/modules/system/bean/ServerFile.java b/src/main/java/com/imyeyu/api/modules/system/bean/ServerFile.java index baf4295..61b600b 100644 --- a/src/main/java/com/imyeyu/api/modules/system/bean/ServerFile.java +++ b/src/main/java/com/imyeyu/api/modules/system/bean/ServerFile.java @@ -61,7 +61,7 @@ public class ServerFile implements Serializable { name = file.getName(); absolutePath = file.getAbsolutePath().replaceAll("\\\\", "/"); SettingService settingService = TimiServerAPI.applicationContext.getBean(SettingService.class); - absolutePath = absolutePath.substring("E:\\IDEAProject\\TimiServerAPI\\data\\file".length()); + absolutePath = absolutePath.substring(new File(settingService.getSystem(SystemFileSetting.BASE_PATH).asString()).getAbsolutePath().length()); modifiedAt = file.lastModified(); this.file = file.isFile(); diff --git a/src/main/java/com/imyeyu/api/modules/system/bean/SystemFileSetting.java b/src/main/java/com/imyeyu/api/modules/system/bean/SystemFileSetting.java new file mode 100644 index 0000000..768ae41 --- /dev/null +++ b/src/main/java/com/imyeyu/api/modules/system/bean/SystemFileSetting.java @@ -0,0 +1,21 @@ +package com.imyeyu.api.modules.system.bean; + +import com.imyeyu.api.bean.SettingEnum; +import com.imyeyu.api.modules.common.entity.Setting; +import lombok.AllArgsConstructor; +import lombok.Getter; + +/// +/// +/// @author 夜雨 +/// @since 2026-09-08 17:08 +@Getter +@AllArgsConstructor +public enum SystemFileSetting implements SettingEnum { + + BASE_PATH("data/file", Setting.ValueType.STRING); + + final String defaultValue; + + final Setting.ValueType valueType; +} diff --git a/src/main/java/com/imyeyu/api/modules/system/controller/FileController.java b/src/main/java/com/imyeyu/api/modules/system/controller/FileController.java index a6da743..e6ccf8d 100644 --- a/src/main/java/com/imyeyu/api/modules/system/controller/FileController.java +++ b/src/main/java/com/imyeyu/api/modules/system/controller/FileController.java @@ -1,9 +1,8 @@ package com.imyeyu.api.modules.system.controller; -import com.imyeyu.api.modules.common.entity.Setting; import com.imyeyu.api.modules.common.service.SettingService; -import com.imyeyu.api.modules.common.service.TagService; import com.imyeyu.api.modules.system.bean.ServerFile; +import com.imyeyu.api.modules.system.bean.SystemFileSetting; import com.imyeyu.api.modules.system.bean.TransferFile; import com.imyeyu.api.modules.system.service.AsyncTaskService; import com.imyeyu.api.modules.system.service.FileService; @@ -47,7 +46,6 @@ import java.awt.image.BufferedImage; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.RandomAccessFile; -import java.net.URI; import java.nio.charset.StandardCharsets; import java.nio.file.Files; import java.nio.file.Path; @@ -67,7 +65,6 @@ import java.util.Map; @RequestMapping("/system/file") public class FileController implements TimiJava, OS.FileSystem { - private final TagService tagService; private final FileService service; private final SettingService settingService; private final AsyncTaskService asyncTaskService; @@ -143,7 +140,7 @@ public class FileController implements TimiJava, OS.FileSystem { public void read(HttpServletRequest req, HttpServletResponse resp) { try { String path = req.getServletPath().substring("/system/file/read".length()); - path = "/root/bin/data/mnt" + path; + path = settingService.getSystem(SystemFileSetting.BASE_PATH).asString() + path; if (TimiJava.isEmpty(path)) { resp.setStatus(HttpServletResponse.SC_NOT_FOUND); return; @@ -195,8 +192,7 @@ public class FileController implements TimiJava, OS.FileSystem { resp.setStatus(HttpServletResponse.SC_NOT_FOUND); return; } -// path = settingService.getAsString(Setting.Module.System.FILE_BASE_PATH) + path; - File file = new File(path); + File file = new File(settingService.getSystem(SystemFileSetting.BASE_PATH).asString() + path); if (!file.exists()) { log.warn("preview a not exist file: {}", path); resp.setStatus(HttpServletResponse.SC_NOT_FOUND); @@ -409,8 +405,7 @@ public class FileController implements TimiJava, OS.FileSystem { public void download(HttpServletResponse resp) { try { String path = TimiSpring.cutURIStartAt("/system/file/download"); - path = "E:/IDEAProject/TimiServerAPI/data/file" + path; - File file = new File(path); + File file = new File(settingService.getSystem(SystemFileSetting.BASE_PATH).asString() + path); service.checkAccessPermission(file.getAbsolutePath()); String mimeType = new Tika().detect(file); diff --git a/src/main/java/com/imyeyu/api/modules/system/service/implement/FileServiceImplement.java b/src/main/java/com/imyeyu/api/modules/system/service/implement/FileServiceImplement.java index 820276d..4eb16ac 100644 --- a/src/main/java/com/imyeyu/api/modules/system/service/implement/FileServiceImplement.java +++ b/src/main/java/com/imyeyu/api/modules/system/service/implement/FileServiceImplement.java @@ -1,8 +1,8 @@ package com.imyeyu.api.modules.system.service.implement; -import com.imyeyu.api.modules.common.entity.Setting; import com.imyeyu.api.modules.common.service.SettingService; import com.imyeyu.api.modules.system.bean.ServerFile; +import com.imyeyu.api.modules.system.bean.SystemFileSetting; import com.imyeyu.api.modules.system.bean.TransferFile; import com.imyeyu.api.modules.system.service.AsyncTaskService; import com.imyeyu.api.modules.system.service.FileService; @@ -257,8 +257,7 @@ public class FileServiceImplement implements TimiJava, FileService { } private String getPath(String path) { -// String basePath = settingService.getSystem(Setting.Module.System.FILE_BASE_PATH).asString(); - String basePath = "E:\\IDEAProject\\TimiServerAPI\\data\\file"; + String basePath = settingService.getSystem(SystemFileSetting.BASE_PATH).asString(); if (TimiJava.isEmpty(path)) { return basePath; }