refactor(web,health): 消除硬编码路径 — 统一 resolveMediaUrl + 动态 base_url
1. 新增 resolveMediaUrl() 工具函数,统一处理 storage_path 前缀和 JWT token 2. MediaLibrary 和 MediaPicker 改用 resolveMediaUrl,消除重复逻辑 3. banner_handler 不再硬编码 localhost:3000,改为从 Host header 动态构建 base_url
This commit is contained in:
14
apps/web/src/utils/media.ts
Normal file
14
apps/web/src/utils/media.ts
Normal file
@@ -0,0 +1,14 @@
|
||||
/**
|
||||
* 将后端返回的 storage_path / thumbnail_path 转换为可访问的前端 URL。
|
||||
*
|
||||
* 后端存储路径格式: "./uploads/{tenant_id}/{filename}" 或 "/uploads/..."
|
||||
* 前端统一使用相对路径 "/uploads/...",由 Vite(dev)或 nginx(prod)代理到后端。
|
||||
*
|
||||
* 如需认证,自动附加 ?token= 参数。
|
||||
*/
|
||||
export function resolveMediaUrl(rawPath: string | null | undefined): string {
|
||||
if (!rawPath) return '';
|
||||
const base = rawPath.replace(/^\.\//, '/');
|
||||
const token = localStorage.getItem('access_token');
|
||||
return token ? `${base}?token=${token}` : base;
|
||||
}
|
||||
Reference in New Issue
Block a user