优化: 图片上传默认本地化,业务域名出代码

- 默认上传端点清空,未配置即本地base64内嵌,不再默认传业务文件服务
- 高级设置新增文件上传端点配置行,配置后启用上传(自定义服务协议不变)
- 同步清理注释内域名残留;小程序端同款硬编码已报备待后续处理
This commit is contained in:
lxy
2026-09-29 17:52:55 +08:00
parent 671020b511
commit 0ca6250ee1
6 changed files with 57 additions and 12 deletions
+18 -11
View File
@@ -1,13 +1,16 @@
//! 桌面端文件服务上传(file.1216.top)— 图片/文件 → 公开 URL
//! 桌面端文件服务上传:可配置端点 POST /upload(multipart 'file' + X-Source 头),图片/文件转公开 URL。
//! 默认不配置上传服务,图片走本地引用(base64);在设置页配置端点后启用上传。
//! 未配置时 uploadFile 直接 reject,调用方(ChatInput)catch 后回退本地 base64,不阻断图片输入。
//!
//! 与小程序端 `apps/df-miniapp/src/utils/fileUpload.ts` 对称:复用 file.1216.top 的
//! `POST /upload`(multipart 'file' + X-Source 头)→ 返回公开 URL。
//! 桌面端是浏览器环境,用 fetch + FormData(区别于小程序 uni.uploadFile)。
//! file.1216.top 已确认 CORS 支持(`Access-Control-Allow-Origin: *`,X-Source 在 allow-headers)。
//! 与小程序端 `apps/df-miniapp/src/utils/fileUpload.ts` 对称:桌面端是浏览器环境,
//! 用 fetch + FormData(区别于小程序 uni.uploadFile)。端点需支持 CORS 与该响应结构:
//! `{"result":{"url":"..."},"retcode":0,"success":true}`。
/** file.1216.top 上传地址(可经 appSettings 'df-file-upload-base' 覆盖) */
export const DEFAULT_FILE_UPLOAD_BASE = 'https://file.1216.top'
/** X-Source 项目标识(文件存 file.1216.top 对应目录,项目隔离) */
import { useAppSettingsStore } from '../../stores/appSettings'
/** 上传服务根地址,默认空串:不配置上传服务,图片走本地引用;设置页 df-file-upload-base 可覆盖 */
export const DEFAULT_FILE_UPLOAD_BASE = ''
/** X-Source 项目标识(服务端按来源目录隔离文件) */
export const FILE_UPLOAD_SOURCE = 'devflow-desktop'
export interface UploadResult {
@@ -15,11 +18,15 @@ export interface UploadResult {
}
/**
* 上传文件到 file.1216.top,返回公开 URL。失败 reject(调用方回退 base64)。
* 响应结构:`{"result":{"url":"https://..."},"retcode":0,"success":true}`
* 上传文件到文件服务,返回公开 URL。未配置端点或上传失败时 reject,调用方回退 base64。
* 端点取值:入参 base 优先,其次设置项 df-file-upload-base,最后 DEFAULT_FILE_UPLOAD_BASE(空)。
*/
export async function uploadFile(file: File, base?: string): Promise<UploadResult> {
const uploadBase = base || DEFAULT_FILE_UPLOAD_BASE
const configured = useAppSettingsStore().get<string>('df-file-upload-base', '')
const uploadBase = (base || configured || DEFAULT_FILE_UPLOAD_BASE).trim()
if (!uploadBase) {
throw new Error('未配置文件上传服务端点')
}
const form = new FormData()
form.append('file', file, file.name)
const res = await fetch(`${uploadBase}/upload`, {