export const COS_BUCKET: string = ''; export const COS_REGION: string = ''; export const COS_PUBLIC_BASE: string = ''; // 统一的对象键前缀(可按业务拆分) export const COS_KEY_PREFIX = 'uploads/'; // 生成文件名(含子目录),避免冲突 export function buildCosKey(params: { prefix?: string; ext?: string; userId?: string }): string { const { prefix, ext, userId } = params; const date = new Date(); const yyyy = date.getFullYear(); const mm = String(date.getMonth() + 1).padStart(2, '0'); const dd = String(date.getDate()).padStart(2, '0'); const ts = date.getTime(); const rand = Math.random().toString(36).slice(2, 8); const base = `${COS_KEY_PREFIX}${yyyy}/${mm}/${dd}/${userId ? userId + '/' : ''}${ts}_${rand}`; return `${prefix ? prefix.replace(/\/*$/, '/') : ''}${base}${ext ? (ext.startsWith('.') ? ext : `.${ext}`) : ''}`; } export function buildPublicUrl(key: string): string { if (!COS_PUBLIC_BASE) return ''; return `${COS_PUBLIC_BASE.replace(/\/$/, '')}/${key.replace(/^\//, '')}`; }