From abbd673ade6d82c06458fe790caacda54e0770c7 Mon Sep 17 00:00:00 2001 From: gulongcheng <474084054@qq.com> Date: Thu, 26 Feb 2026 16:27:16 +0800 Subject: [PATCH] =?UTF-8?q?fix:=E4=BB=BB=E5=8A=A1=E6=89=A7=E8=A1=8C?= =?UTF-8?q?=E6=96=87=E4=BB=B6=E6=90=9C=E7=B4=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/MinioFileIDataFileServiceImpl.java | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/data/src/main/java/com/sdm/data/service/impl/MinioFileIDataFileServiceImpl.java b/data/src/main/java/com/sdm/data/service/impl/MinioFileIDataFileServiceImpl.java index 3fba998c..fb6bebeb 100644 --- a/data/src/main/java/com/sdm/data/service/impl/MinioFileIDataFileServiceImpl.java +++ b/data/src/main/java/com/sdm/data/service/impl/MinioFileIDataFileServiceImpl.java @@ -2401,14 +2401,29 @@ public class MinioFileIDataFileServiceImpl implements IDataFileService { String objectKey = dirMetadataInfo.getObjectKey(); String prefix = dirTypeEnum.getDirName(); + // 检查是否以指定前缀开头 if (!objectKey.startsWith(prefix)) { return null; } - // knowledge/知识库A/子目录/ 移除前缀knowledge/和最后的/后 ->知识库A/子目录 - return objectKey.substring(prefix.length()+1, objectKey.length() - 1); + // 如果 objectKey 等于 prefix + "/",说明是根目录,直接返回空字符串 + if (objectKey.equals(prefix + "/")) { + return ""; + } + + // 截取相对路径部分:移除前缀和末尾的 "/" + int beginIndex = prefix.length() + 1; // 起始位置为 prefix 后的第一个字符 + int endIndex = objectKey.length() - 1; // 结束位置为倒数第二个字符(去掉末尾的 "/") + + // 确保 beginIndex 不超过 endIndex,避免越界 + if (beginIndex >= endIndex) { + return ""; // 返回空字符串表示没有子路径 + } + + return objectKey.substring(beginIndex, endIndex); } + @Override public SdmResponse downloadRecord(AddDownloadRecordReq req) { return null;