From 78455c1a5d8b6d0dea65c1fc24a652fcad91b218 Mon Sep 17 00:00:00 2001 From: Junyi Date: Fri, 14 Mar 2025 00:10:00 +0800 Subject: [PATCH] fix(plugin-file-manager): fix image url (#6459) * fix(plugin-file-manager): fix image url * fix(plugin-file-manager): fix url with search part * fix(plugin-file-manager): fix lightbox preview url * fix(plugin-file-manager): encode link url --- .../src/schema-component/antd/upload/Upload.tsx | 12 ++++++------ .../client/src/schema-component/antd/upload/index.ts | 2 +- .../src/schema-component/antd/upload/shared.ts | 5 +++-- .../src/client/components/Edit.tsx | 4 ++-- 4 files changed, 12 insertions(+), 11 deletions(-) diff --git a/packages/core/client/src/schema-component/antd/upload/Upload.tsx b/packages/core/client/src/schema-component/antd/upload/Upload.tsx index 098dff9f52..37a2f1ca8e 100644 --- a/packages/core/client/src/schema-component/antd/upload/Upload.tsx +++ b/packages/core/client/src/schema-component/antd/upload/Upload.tsx @@ -43,10 +43,10 @@ attachmentFileTypes.add({ }, getThumbnailURL(file) { if (file.preview) { - return file.preview; + return encodeFileURL(file.preview); } if (file.url) { - return `${file.url}${file.thumbnailRule || ''}`; + return encodeFileURL(`${file.url}${file.thumbnailRule || ''}`); } if (file.originFileObj) { return URL.createObjectURL(file.originFileObj); @@ -65,9 +65,9 @@ attachmentFileTypes.add({ return ( onSwitchIndex(null)} onMovePrevRequest={() => onSwitchIndex((index + list.length - 1) % list.length)} onMoveNextRequest={() => onSwitchIndex((index + 1) % list.length)} @@ -264,7 +264,7 @@ function AttachmentListItem(props) { ) : null, ]; const wrappedItem = file.url ? ( - + {item} ) : ( diff --git a/packages/core/client/src/schema-component/antd/upload/index.ts b/packages/core/client/src/schema-component/antd/upload/index.ts index cd0ff5dd7f..9fc60dfbce 100644 --- a/packages/core/client/src/schema-component/antd/upload/index.ts +++ b/packages/core/client/src/schema-component/antd/upload/index.ts @@ -7,7 +7,7 @@ * For more information, please refer to: https://www.nocobase.com/agreement. */ -export { attachmentFileTypes } from './shared'; +export { attachmentFileTypes, encodeFileURL } from './shared'; export { useUploadStyles } from './style'; export * from './Upload'; diff --git a/packages/core/client/src/schema-component/antd/upload/shared.ts b/packages/core/client/src/schema-component/antd/upload/shared.ts index 338d1e8065..f743b8fe00 100644 --- a/packages/core/client/src/schema-component/antd/upload/shared.ts +++ b/packages/core/client/src/schema-component/antd/upload/shared.ts @@ -273,9 +273,10 @@ export function encodeFileURL(url: string): string { return url; } - const parts = url.split('/'); + const [base, search = ''] = url.split('?'); + const parts = base.split('/'); const filename = parts.pop(); parts.push(encodeURIComponent(filename)); - const encodedURL = parts.join('/'); + const encodedURL = `${parts.join('/')}${search ? `?${search}` : ''}`; return encodedURL; } diff --git a/packages/plugins/@nocobase/plugin-field-markdown-vditor/src/client/components/Edit.tsx b/packages/plugins/@nocobase/plugin-field-markdown-vditor/src/client/components/Edit.tsx index 51adb9b37b..ba70f6bc97 100644 --- a/packages/plugins/@nocobase/plugin-field-markdown-vditor/src/client/components/Edit.tsx +++ b/packages/plugins/@nocobase/plugin-field-markdown-vditor/src/client/components/Edit.tsx @@ -7,7 +7,7 @@ * For more information, please refer to: https://www.nocobase.com/agreement. */ -import { useAPIClient, useApp, withDynamicSchemaProps } from '@nocobase/client'; +import { encodeFileURL, useAPIClient, useApp, withDynamicSchemaProps } from '@nocobase/client'; import React, { useEffect, useLayoutEffect, useMemo, useRef, useState } from 'react'; import Vditor from 'vditor'; import { defaultToolbar } from '../interfaces/markdown-vditor'; @@ -81,7 +81,7 @@ export const Edit = withDynamicSchemaProps((props) => { data: { errFiles: [], succMap: { - [response.data.filename]: response.data.url, + [response.data.filename]: encodeFileURL(response.data.url), }, }, };