Ruta:
router.post('/MOCReport', upload.array('files'), MOCReportController.MOCReport_post);Controlador:
exports.MOCReport_post = (req, res, next) => { const files = req.files; console.log(files.filename); if(!files){ const error = new Error('Please upload an image') error.httpStatusCode = 400 return next (error) } var paths = req.files.map(files => file.path) let newMOCReport = new MOCReport({ facilityName: req.body.facilityName, MoCDescription: req.body.MoCDescription, MoCReportDateTime: req.body.MoCReportDateTime, MoCDisasterLocation: req.body.MoCDisasterLocation, mocImage: req.files.paths }); newMOCReport.save().then((MOCReportDoc) => { res.send(MOCReportDoc); }); }; Schema: mocImage:{ type: Array, required: false },Obteniendo un error indefinido al cargar varias imágenes en la base de datos mongoDB con multer.
Error: escuchando el puerto 3000 Conectado a MongoDB con éxito :)
indefinido
POST /MoCReport 500 44.414 ms - 43
Compruebe si está enviando todos los archivos con el mismo nombre " archivos ".
Puedes intentar cambiar esto:
upload.array('files')a esto:
upload.any() El método any() aceptará todos los archivos. No comprobará el nombre del campo.
Además, después de este cambio, debe cambiar esta línea:
var paths = req.files.map(files => file.path); Tiene un error allí, porque está mapeando files y está accediendo al file . Cámbialo así:
const paths = req.files.map(file => file.path);Compruebe que este es el código de trabajo completo.
const express = require('express') const app = express() const port = 3000 const multer = require('multer') const upload = multer({ dest: 'uploads/' }) app.get('/', (req, res) => { res.send('<form id="form_el" class=\'new-project\' action=\'/MOCReport\' method=\'POST\' enctype="multipart/form-data">\n' + ' <label for=\'file\'>Select your image:</label>\n' + ' <input type=\'file\' multiple=\'multiple\' accept=\'image/!*\' name=\'uploadedImages\' id=\'file\' />\n' + ' <span class=\'hint\'>Supported files: jpg, jpeg, png.</span>\n' + ' <button type=\'submit\'>upload</button>\n' + '</form>') }) app.post('/MOCReport',upload.any(),function (req, res, next){ const files = req.files; console.log(JSON.stringify(files)); res.send('Uploaded successfully'); }); app.listen(port, () => { console.log(`Example app listening on port ${port}`) })yo tambien tuve un problema similar
Por favor revise el código de reacción
Verifique la estructura para ver si la información del archivo está correctamente cargada en formdata.