Multer no guarda el archivo y no puedo ver ningún registro... La carpeta está vacía, no hay ningún archivo.
Los datos de la imagen se envían realmente al servidor cuando su consola registra: Captura de pantalla de req.files from log
¿Qué estoy haciendo mal? por favor ayúdame a encontrar
const express = require('express'); const router = express.Router(); const path = require('path'); const multer = require('multer'); const storage = multer.diskStorage({ destination: (req, file, cb) => { console.log('destination') // can't see this log cb(null, './uploads/'); }, filename: (req, file, cb) => { console.log('filename') // can't see this log const ext = file.mimetype.split("/")[1]; cb(null, Date.now() + path.extname(file.originalname)); } }); const uploadImage = multer({ storage, limits: { fieldSize: 1024 * 1024 }, fileFilter: (req, file, cb) => { console.log('log!') // can't see this log const ext = path.extname(file.originalname); if (ext !== '.jpg' && ext !== '.jpeg' && ext !== '.png') { console.log('not log!') // can't see this log const err = new Error('Extention'); err.code = 'EXTENTION'; return cb(err); } console.log('log!') // can't see this log cb(null, true); } }).single('photo'); router.post('/image', async (req, res) => { console.log(req.files) // can see this log uploadImage(req, res, err => { console.log('upload') // can see this log let error = ''; if (err) { console.log(err) if (err.code === 'LIMIT_FILE_SIZE') { error = 'Max 500kb!'; } if (err.code === 'EXTENTION') { error = 'Only jpg and png!'; } } res.json({ ok: !error, error }); }) });Multer finalmente dio un error, por lo que el problema se resolvió... El problema era que los nombres de estos campos son diferentes:
Servidor: .single('pic');
Y en la solicitud al servidor: formData.append('pic', file);
El código parece funcionar bien para mí, pero solo tuve que crear manualmente el directorio de uploads .
Utilicé cartero para probar esto y la imagen apareció en mi directorio de cargas.
# Console Output SERVER RUNNING ON 3000 undefined log! log! destination filename upload