Fix: TypeScript-Fehler im multer Upload-Endpoint

- @types/multer zu devDependencies hinzugefügt (fehlte → TS7016)
- Explizite Callback-Typen in diskStorage/fileFilter (TS7006)
- Express.Multer.File durch lokalen MulterFile-Type ersetzt (TS2694)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Bot 2026-03-01 22:25:10 +01:00
parent 52c86240af
commit db9a18b367
2 changed files with 9 additions and 6 deletions

View file

@ -1030,9 +1030,11 @@ app.post('/api/admin/sounds/rename', requireAdmin, (req: Request, res: Response)
});
// --- Datei-Upload (Drag & Drop) ---
type MulterFile = { fieldname: string; originalname: string; encoding: string; mimetype: string; destination: string; filename: string; path: string; size: number; };
const uploadStorage = multer.diskStorage({
destination: (_req, _file, cb) => cb(null, SOUNDS_DIR),
filename: (_req, file, cb) => {
destination: (_req: any, _file: any, cb: (e: null, dest: string) => void) => cb(null, SOUNDS_DIR),
filename: (_req: any, file: { originalname: string }, cb: (e: null, name: string) => void) => {
const safe = file.originalname.replace(/[<>:"/\\|?*\x00-\x1f]/g, '_');
const { name, ext } = path.parse(safe);
let finalName = safe;
@ -1046,7 +1048,7 @@ const uploadStorage = multer.diskStorage({
});
const uploadMulter = multer({
storage: uploadStorage,
fileFilter: (_req, file, cb) => {
fileFilter: (_req: any, file: { originalname: string }, cb: (e: null, ok: boolean) => void) => {
const ext = path.extname(file.originalname).toLowerCase();
cb(null, ext === '.mp3' || ext === '.wav');
},
@ -1054,9 +1056,9 @@ const uploadMulter = multer({
});
app.post('/api/upload', requireAdmin, (req: Request, res: Response) => {
uploadMulter.array('files', 20)(req, res, async (err) => {
if (err) return res.status(400).json({ error: err.message ?? 'Upload fehlgeschlagen' });
const files = (req as any).files as Express.Multer.File[] | undefined;
uploadMulter.array('files', 20)(req, res, async (err: any) => {
if (err) return res.status(400).json({ error: err?.message ?? 'Upload fehlgeschlagen' });
const files = (req as any).files as MulterFile[] | undefined;
if (!files?.length) return res.status(400).json({ error: 'Keine gültigen Dateien (nur MP3/WAV)' });
const saved = files.map(f => ({ name: f.filename, size: f.size }));
// Normalisierung im Hintergrund starten