- 新增文章详情页面,支持根据文章 ID 加载和展示文章内容 - 添加文章卡片组件,展示推荐文章的标题、封面和阅读量 - 更新文章服务,支持获取文章列表和根据 ID 获取文章详情 - 集成腾讯云 COS SDK,支持文件上传功能 - 优化打卡功能,支持按日期加载和展示打卡记录 - 更新相关依赖,确保项目兼容性和功能完整性 - 调整样式以适应新功能的展示和交互
35 lines
1.3 KiB
TypeScript
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 '';
|
|
}
|
|
|
|
|