diff --git a/src/routes/admin/files/+page.server.ts b/src/routes/admin/files/+page.server.ts index 0024327..d51c888 100644 --- a/src/routes/admin/files/+page.server.ts +++ b/src/routes/admin/files/+page.server.ts @@ -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) {