const multer = require('multer'); const path = require('path'); const crypto = require('crypto'); const UPLOAD_DIR = process.env.UPLOAD_DIR || './uploads'; const storage = multer.diskStorage({ destination: (req, file, cb) => { cb(null, UPLOAD_DIR); }, filename: (req, file, cb) => { const uniqueId = crypto.randomBytes(8).toString('hex'); const ext = path.extname(file.originalname); cb(null, `${Date.now()}_${uniqueId}${ext}`); } }); const fileFilter = (req, file, cb) => { const allowedTypes = [ 'image/jpeg', 'image/png', 'image/gif', 'image/webp', 'image/svg+xml' ]; if (allowedTypes.includes(file.mimetype)) { cb(null, true); } else { cb(new Error('Tipo file non supportato'), false); } }; const upload = multer({ storage, fileFilter, limits: { fileSize: 20 * 1024 * 1024 // 20MB max } }); module.exports = upload;