feat: 优化文件上传命名规范并增强存储键名唯一性

This commit is contained in:
seahi committed 2026-07-29 21:48:40 +08:00
1 parent 44f81ef0c7
commit 842af264e2
1 file changed
+6 -3
+6 -3
View File
@@ -64,12 +64,15 @@ export const actions: Actions = {
return fail(400, { error: '没有提供有效的文件' });
}
// Generate unique key with year-month grouping (e.g. uploads/2026-07/timestamp-random.ext)
// Generate timestamp-based filename and robust physical key
const ext = file.name.split('.').pop() || '';
const randomStr = Math.random().toString(36).substring(2, 8);
const now = new Date();
const yearMonth = `${now.getFullYear()}-${String(now.getMonth() + 1).padStart(2, '0')}`;
const key = `uploads/${yearMonth}/${Date.now()}-${randomStr}.${ext}`;
const yyyymmdd = `${now.getFullYear()}${String(now.getMonth() + 1).padStart(2, '0')}${String(now.getDate()).padStart(2, '0')}`;
const hhmmss = `${String(now.getHours()).padStart(2, '0')}${String(now.getMinutes()).padStart(2, '0')}${String(now.getSeconds()).padStart(2, '0')}`;
const newFilename = `${yyyymmdd}_${hhmmss}.${ext}`;
const key = `uploads/${yearMonth}/${yyyymmdd}_${hhmmss}_${randomStr}.${ext}`;
try {
// Upload to R2
@@ -81,7 +84,7 @@ export const actions: Actions = {
await ensureAttachmentsTable(db); // Defensive checking
await db.prepare(
'INSERT INTO attachments (filename, key, mime_type, size) VALUES (?, ?, ?, ?)'
).bind(file.name, key, file.type, file.size).run();
).bind(newFilename, key, file.type, file.size).run();
return { success: true };
} catch (err: any) {