From f5de615d68ba971290f3f3e2d52359f412ddb3b5 Mon Sep 17 00:00:00 2001 From: fantasy-ke <2246080525@qq.com> Date: Tue, 23 Jun 2026 17:33:47 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0=E8=87=AA=E5=AE=9A?= =?UTF-8?q?=E4=B9=89=E8=BF=94=E5=9B=9E=E9=93=BE=E6=8E=A5=E5=89=8D=E7=BC=80?= =?UTF-8?q?=E5=8A=9F=E8=83=BD=EF=BC=8C=E4=BC=98=E5=8C=96=E9=BB=98=E8=AE=A4?= =?UTF-8?q?=E6=A0=BC=E5=BC=8F=E4=B8=8B=E7=9A=84=E9=93=BE=E6=8E=A5=E6=8B=BC?= =?UTF-8?q?=E6=8E=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/settings/settingsTab.ts | 15 +++++++++++++++ src/types/index.ts | 6 ++++++ src/upload/uploadService.ts | 6 +++--- src/utils/i18n.ts | 10 ++++++++++ 4 files changed, 34 insertions(+), 3 deletions(-) diff --git a/src/settings/settingsTab.ts b/src/settings/settingsTab.ts index c8e3515..8babcc0 100644 --- a/src/settings/settingsTab.ts +++ b/src/settings/settingsTab.ts @@ -233,8 +233,23 @@ export class CFImageBedSettingTab extends PluginSettingTab { .onChange(async (value: string) => { this.plugin.settings.returnFormat = value; await this.plugin.saveSettings(); + this.display(); })); + // 自定义返回链接前缀(仅默认格式时显示) + if (this.plugin.settings.returnFormat !== 'full') { + new Setting(container) + .setName(this.i18n.t('settings.basic.customReturnBaseUrl.name')) + .setDesc(this.i18n.t('settings.basic.customReturnBaseUrl.desc')) + .addText((text: TextComponent) => text + .setPlaceholder(this.i18n.t('settings.basic.customReturnBaseUrl.placeholder')) + .setValue(this.plugin.settings.customReturnBaseUrl || '') + .onChange(async (value: string) => { + this.plugin.settings.customReturnBaseUrl = value.trim(); + await this.plugin.saveSettings(); + })); + } + // 上传目录设置 new Setting(container) .setName(this.i18n.t('settings.basic.uploadFolder.name')) diff --git a/src/types/index.ts b/src/types/index.ts index 0cbdae9..328d59a 100644 --- a/src/types/index.ts +++ b/src/types/index.ts @@ -41,6 +41,9 @@ export interface CFImageBedSettings { enableLocalBackup: boolean; backupPath: string; + // 返回链接自定义前缀 + customReturnBaseUrl: string; + // 语言配置 language: 'zh' | 'en'; } @@ -86,6 +89,9 @@ export const DEFAULT_SETTINGS: CFImageBedSettings = { enableLocalBackup: false, backupPath: 'attachments/backup', + // 返回链接自定义前缀 + customReturnBaseUrl: '', + // 语言配置 language: 'zh', diff --git a/src/upload/uploadService.ts b/src/upload/uploadService.ts index bc9b3d1..02187aa 100644 --- a/src/upload/uploadService.ts +++ b/src/upload/uploadService.ts @@ -125,9 +125,9 @@ export class UploadService { // 完整链接格式,直接返回 return src; } else { - // 默认格式,需要拼接API URL - const fullUrl = `${this.settings.apiUrl}${src}`; - return fullUrl; + // 默认格式,需要拼接基础 URL(优先使用自定义前缀,否则回退到 API URL) + const baseUrl = this.settings.customReturnBaseUrl?.trim() || this.settings.apiUrl; + return `${baseUrl}${src}`; } } else { throw new Error(this.i18n.t('errors.serverResponseInvalid')); diff --git a/src/utils/i18n.ts b/src/utils/i18n.ts index ad63506..6b69680 100644 --- a/src/utils/i18n.ts +++ b/src/utils/i18n.ts @@ -78,6 +78,11 @@ const translations: Record = { full: '完整链接格式' } }, + customReturnBaseUrl: { + name: '自定义返回链接前缀', + desc: '默认格式下拼接返回链接时使用的基础 URL,为空时使用 API URL', + placeholder: 'https://cdn.example.com' + }, uploadFolder: { name: '上传目录', desc: '上传目录,使用相对路径', @@ -323,6 +328,11 @@ const translations: Record = { full: 'Full link format' } }, + customReturnBaseUrl: { + name: 'Custom return URL prefix', + desc: 'Base URL used when concatenating the return link in default format. Falls back to API URL when empty.', + placeholder: 'https://cdn.example.com' + }, uploadFolder: { name: 'Upload folder', desc: 'Upload folder using a relative path',