Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

308
Visualizações
no se puede obtener la propiedad del archivo usando Multer

Estoy tratando de cargar una imagen desde mi formulario usando Multer , cuando inserto la imagen todo funciona bien, pero cuando no hay una imagen elegida, aparece un error.

  • Aquí está la configuración de multer, todas las imágenes cargadas se almacenan en public/images/uploads:
 //handle file upload var storage = multer.diskStorage({ destination: function (req, file, cb) { cb(null, 'public/images/uploads/') }, filename: function (req, file, cb) { cb(null, file.fieldname + '-' + Date.now()+ '.jpg') } }); var upload = multer({ storage: storage })

Ahora quiero recuperar el valor de mainImageName, pero cuando no inserto ninguna imagen, se produce un error cannot get property filename of undefined.

  • Aquí está el resto:

     //Submit new post router.post('/add', upload.single('mainimage'), function(req, res, next) { var title = req.body.title; var category = req.body.category; var body = req.body.body; var author = req.body.author; var date = new Date(); if(req.file && req.file.mainimage){ var mainImageName = req.file.filename; var mainImageMime = req.file.mainimage.mimetype; var mainImagePath = req.file.mainimage.path; var mainImageSize = req.file.mainimage.size; }else{ //if there was no image uploaded!! //noimage.png should be placed in public/images/uploads mainImageName = 'noimage.png'; } console.log(mainImageName); //always returns noimage.png !! //form validation req.checkBody('title', 'You forgot the title').notEmpty(); req.checkBody('body', 'Please fill in the body').notEmpty(); //check errors var errors = req.validationErrors(); if(errors){

    var miscategorias = []; var categorías = db.get('categorías'); categorías.find({}, {}, función(err, categorías) {

     for (i=0; i<categories.length; i++) { mycategories[i] = categories[i]; } }); res.render('addpost', { 'pageTitle': 'Add Post', 'errors': errors, 'title': title, 'body': body, 'categories': mycategories }); } else{ var posts = db.get('posts'); //submit Post posts.insert({ "title": title, "body": body, "category": category, "date": date, "author": author, "mainimage": mainImageName }, function(err, post) { if (err){ res.send('There was an issue submitting the post.') } else { req.flash('success_msg', 'Post Submitted'); res.location('/'); res.redirect('/'); } }); }

    });

about 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

Encontré el problema, la condición if(req.file && req.file.mainimage) nunca se cumplió porque req.file.mainimage siempre está indefinida, así que simplemente la cambié a if(req.file) y funcionó bien.

Así es como debería verse:

 if(req.file){ var mainImageName = req.file.filename; var mainImageMime = req.file.mimetype; var mainImagePath = req.file.path; var mainImageSize = req.file.size; }else{ //if there was no image uploaded!! //noimage.png should be placed in public/images/uploads mainImageName = 'noimage.png'; }
about 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda