Estoy usando multer por primera vez y noté que la imagen siempre se carga.
Ahora mi problema es que me gustaría hacer una validación de datos en el cuerpo de la solicitud con Joi, luego mover el archivo a la carpeta adecuada si la validación de datos es exitosa.
¿Es posible con Multer y cómo lograría esto?
O, ¿hay alguna forma de deshabilitar la carga automática con Multer y mover el archivo manualmente una vez que se realiza la validación de datos?
Muchas gracias por tu ayuda.
Hay varias maneras de hacer esto. Podría usar un middleware personalizado que realiza la validación antes de Multer, o podría administrar la validación dentro de Multer directamente. Aquí hay un ejemplo usando el DiskStorage predeterminado:
const storage = multer.diskStorage({ destination: function (req, file, cb) { const valid = ...; // your validation logic if (valid) cb(null, '/tmp/my-uploads'); else cb(new Error('Validation failed.')); }, }); const upload = multer({ storage: storage });Si necesita más control, puede usar MemoryStorage:
const storage = multer.memoryStorage(); const upload = multer({ storage: storage }); app.post('/xyz', upload.single('file'), (req, res) => { // because of memoryStorage, the file will be available in a buffer // do your validation logic here, and when you are happy write the buffer to the disk });Obtenga más información sobre el almacenamiento en los documentos .