Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

200
Vistas
Obtenga la ruta de la imagen con Multer Express Nodejs

Estoy usando Multer para guardar imágenes, pero necesito obtener la ruta de la imagen para guardarla en MongoDB. Estoy tratando de obtener la ruta con req.file pero siempre me dice en la consola que no está definido.

esta es mi ruta:

 import { Router } from 'express'; import { check, validationResult } from 'express-validator'; const multer = require('multer'); const storage = multer.diskStorage({ destination: function (req, file, cb) { cb(null, 'uploads/products') }, filename: function (req, file, cb) { cb(null, new Date().toISOString().replace(/:/g, '-') + file.originalname) } }); const fileFilter = (req, file, cb) => { // reject a file if (file.mimetype === 'image/jpeg' ||file.mimetype === 'image/png') { cb(null, true); } else { cb(null, false); //cb(new Error('I don\'t have a clue!')) } } const upload = multer( { storage: storage, limits:{ fileSize: 1024 * 1024 }, fileFilter: fileFilter }); let router = Router(); router.post('/', upload.single('img'), newProduct );

Y en el nuevo controlador de Producto estoy tratando de leer el archivo req. pero la consola me dice que no está definido:

Controlador:

 import { Product } from '../models' let newProduct = async (req, res = response ) => { console.log('file ' + req.file); //UNDEFINED try { let { status, user, ...body } = req.body; let productDB = await Product.findOne ( { 'name': body.name } ); if (productDB) { return res.status(400).json({ msg:`El producto ${ productDB.name } ya existe` }) } let data = { ...body, name: body.name, user: req.user._id } let product = new Product( data ); await product.save(); res.status(200).json( product ); } catch (error) { return res.status(400).json({ error }); } }

Consola:

consola

Gracias por tu ayuda.

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

puedes intentar hacer esto en nombre de archivo en su lugar:

 filename: function (req, file, cb) { req.imageName = new Date().toISOString().replace(/:/g, '-') + file.originalname cb(null, req.imageName) }

entonces su:

 console.log('file ' + req.file); //UNDEFINED //you can get imageName instead console.log('imageName',req.imageName) //if you want url to store in database you can do this //supposing your have images directory in root of your node server const url = `${req.protocol}://${req.get('host')}/images/${req.body.image}`
about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda