import { listByIds } from '@/api/system/oss'; const OSS_MARKER_RE = /oss:\/\/([\w-]+)/g; /** * 将 HTML 中的 oss://{ossId} 标记批量解析为真实的 OSS 授权 URL * * 适用于富文本内容展示场景(Editor 组件 / 详情页只读渲染等) * * @example * const html = await resolveOssContent('

'); */ export async function resolveOssContent(html: string): Promise { if (!html) return html; const matches = [...html.matchAll(OSS_MARKER_RE)]; if (matches.length === 0) return html; const ossIds = [...new Set(matches.map(m => m[1]))]; try { const res = await listByIds(ossIds.join(',')); let result = html; for (const oss of res.data) { result = result.replaceAll(`oss://${oss.ossId}`, oss.url); } return result; } catch { return html; } }