From 53fe3631df3f19ffd7beefd1a376893be9946395 Mon Sep 17 00:00:00 2001 From: Ryo Date: Mon, 9 Mar 2026 14:21:28 +0800 Subject: [PATCH] fix: api dataset filename fallback (#6527) --- .../core/dataset/apiDataset/custom/api.ts | 26 ++++++++++++++++--- .../service/core/dataset/collection/utils.ts | 2 +- 2 files changed, 24 insertions(+), 4 deletions(-) diff --git a/packages/service/core/dataset/apiDataset/custom/api.ts b/packages/service/core/dataset/apiDataset/custom/api.ts index 95f8d273fa..cd277a6d4a 100644 --- a/packages/service/core/dataset/apiDataset/custom/api.ts +++ b/packages/service/core/dataset/apiDataset/custom/api.ts @@ -92,6 +92,26 @@ export const useApiDatasetRequest = ({ apiServer }: { apiServer: APIFileServer } .catch((err) => responseError(err)); }; + const getPreviewUrlFilename = (previewUrl: string) => { + const parseFilename = (pathname: string) => { + const filename = pathname.split('/').pop() || ''; + + if (!filename) return ''; + + try { + return decodeURIComponent(filename); + } catch { + return filename; + } + }; + + try { + return parseFilename(new URL(previewUrl).pathname); + } catch { + return parseFilename(previewUrl.split('?')[0].split('#')[0]); + } + }; + const listFiles = async ({ searchKey, parentId @@ -163,7 +183,7 @@ export const useApiDatasetRequest = ({ apiServer }: { apiServer: APIFileServer } }); if (rawTextBuffer) { return { - title, + title: title || rawTextBuffer.filename || getPreviewUrlFilename(previewUrl), rawText: rawTextBuffer.text }; } @@ -178,7 +198,7 @@ export const useApiDatasetRequest = ({ apiServer }: { apiServer: APIFileServer } getFormatText: true }); - const sourceName = title || getNanoid(); + const sourceName = title || getPreviewUrlFilename(previewUrl) || getNanoid(); getS3RawTextSource().addRawTextBuffer({ sourceId: previewUrl, @@ -188,7 +208,7 @@ export const useApiDatasetRequest = ({ apiServer }: { apiServer: APIFileServer } }); return { - title, + title: title || sourceName, rawText }; } diff --git a/packages/service/core/dataset/collection/utils.ts b/packages/service/core/dataset/collection/utils.ts index 5573b4957c..81c53ef3d9 100644 --- a/packages/service/core/dataset/collection/utils.ts +++ b/packages/service/core/dataset/collection/utils.ts @@ -202,7 +202,7 @@ export const syncCollection = async (collection: CollectionWithDatasetType) => { }); return DatasetCollectionSyncResultEnum.success; - } else if (collection.name !== title) { + } else if (title && collection.name !== title) { await MongoDatasetCollection.updateOne({ _id: collection._id }, { $set: { name: title } }); return DatasetCollectionSyncResultEnum.success; }