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:
parent
52c86240af
commit
db9a18b367
2 changed files with 9 additions and 6 deletions
|
|
@ -24,6 +24,7 @@
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@types/cors": "^2.8.17",
|
"@types/cors": "^2.8.17",
|
||||||
"@types/express": "^4.17.21",
|
"@types/express": "^4.17.21",
|
||||||
|
"@types/multer": "^1.4.12",
|
||||||
"@types/node": "^20.12.12",
|
"@types/node": "^20.12.12",
|
||||||
"ts-node": "^10.9.2",
|
"ts-node": "^10.9.2",
|
||||||
"typescript": "^5.5.4"
|
"typescript": "^5.5.4"
|
||||||
|
|
|
||||||
|
|
@ -1030,9 +1030,11 @@ app.post('/api/admin/sounds/rename', requireAdmin, (req: Request, res: Response)
|
||||||
});
|
});
|
||||||
|
|
||||||
// --- Datei-Upload (Drag & Drop) ---
|
// --- 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({
|
const uploadStorage = multer.diskStorage({
|
||||||
destination: (_req, _file, cb) => cb(null, SOUNDS_DIR),
|
destination: (_req: any, _file: any, cb: (e: null, dest: string) => void) => cb(null, SOUNDS_DIR),
|
||||||
filename: (_req, file, cb) => {
|
filename: (_req: any, file: { originalname: string }, cb: (e: null, name: string) => void) => {
|
||||||
const safe = file.originalname.replace(/[<>:"/\\|?*\x00-\x1f]/g, '_');
|
const safe = file.originalname.replace(/[<>:"/\\|?*\x00-\x1f]/g, '_');
|
||||||
const { name, ext } = path.parse(safe);
|
const { name, ext } = path.parse(safe);
|
||||||
let finalName = safe;
|
let finalName = safe;
|
||||||
|
|
@ -1046,7 +1048,7 @@ const uploadStorage = multer.diskStorage({
|
||||||
});
|
});
|
||||||
const uploadMulter = multer({
|
const uploadMulter = multer({
|
||||||
storage: uploadStorage,
|
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();
|
const ext = path.extname(file.originalname).toLowerCase();
|
||||||
cb(null, ext === '.mp3' || ext === '.wav');
|
cb(null, ext === '.mp3' || ext === '.wav');
|
||||||
},
|
},
|
||||||
|
|
@ -1054,9 +1056,9 @@ const uploadMulter = multer({
|
||||||
});
|
});
|
||||||
|
|
||||||
app.post('/api/upload', requireAdmin, (req: Request, res: Response) => {
|
app.post('/api/upload', requireAdmin, (req: Request, res: Response) => {
|
||||||
uploadMulter.array('files', 20)(req, res, async (err) => {
|
uploadMulter.array('files', 20)(req, res, async (err: any) => {
|
||||||
if (err) return res.status(400).json({ error: err.message ?? 'Upload fehlgeschlagen' });
|
if (err) return res.status(400).json({ error: err?.message ?? 'Upload fehlgeschlagen' });
|
||||||
const files = (req as any).files as Express.Multer.File[] | undefined;
|
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)' });
|
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 }));
|
const saved = files.map(f => ({ name: f.filename, size: f.size }));
|
||||||
// Normalisierung im Hintergrund starten
|
// Normalisierung im Hintergrund starten
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue