feat: 优化文件上传命名规范并增强存储键名唯一性
This commit is contained in:
1 parent
44f81ef0c7
commit
842af264e2
1 file changed
+6
-3
@@ -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) {
|
||||
|
||||
Reference in new issue
Block a user