Having issues with uploading images from my form using Multer. When an image is inserted, everything functions correctly. However, I encounter an error when no image is selected.
- Below is the configuration for Multer: all uploaded images are stored in public/images/uploads:
// File upload handling 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 })
My problem arises when attempting to retrieve the value of mainImageName without inserting an image, resulting in the error
cannot get property filename of undefined.
Here is the remainder of the code :
// 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 mycategories = []; var categories = db.get('categories'); categories.find({}, {}, function(err, categories) {
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('/'); } }); }
});