Files
digital-pilates/constants/Cos.ts
richarjiang 5d09cc05dc feat: 更新文章功能和相关依赖
- 新增文章详情页面,支持根据文章 ID 加载和展示文章内容
- 添加文章卡片组件,展示推荐文章的标题、封面和阅读量
- 更新文章服务,支持获取文章列表和根据 ID 获取文章详情
- 集成腾讯云 COS SDK,支持文件上传功能
- 优化打卡功能,支持按日期加载和展示打卡记录
- 更新相关依赖,确保项目兼容性和功能完整性
- 调整样式以适应新功能的展示和交互
2025-08-14 16:03:19 +08:00

35 lines
1.3 KiB
TypeScript

export const COS_BUCKET: string = 'plates-1251306435';
export const COS_REGION: string = 'ap-guangzhou';
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 {
const cleanedKey = key.replace(/^\//, '');
if (COS_PUBLIC_BASE && COS_PUBLIC_BASE.trim()) {
return `${COS_PUBLIC_BASE.replace(/\/$/, '')}/${cleanedKey}`;
}
// 回退:使用 COS 默认公网域名
// 例如: https://<bucket>.cos.<region>.myqcloud.com/<key>
if (COS_BUCKET && COS_REGION) {
return `https://${COS_BUCKET}.cos.${COS_REGION}.myqcloud.com/${cleanedKey}`;
}
return '';
}