the project contains 3 files which are listed below the thing is happening when i try to change the if from (req.file.profileImage) to (req.file) it works but it always send the default name and not uploading the requested file and if i leave it (req.file.profileImage) if gives an error when i try to submit the form >> Cannot read property 'profileimage' of undefined
1- users.js
var express = require('express');
var router = express.Router();
var User=require('../models/user.js');
/* GET users listing. */
router.get('/', function(req, res, next) {
res.send('respond with a resource');
});
router.get('/register', function(req, res, next) {
res.render('register', {
'title': 'Register'
});
});
router.get('/login', function(req, res, next) {
res.render('login', {
'title': 'Login'
});
});
router.post('/register', function(req, res, next) {
var name = req.body.name;
var email = req.body.email;
var username = req.body.username;
var password = req.body.password;
var password2 = req.body.password2;
// Check for Image Field
if(req.file.profileimage) {
console.log('uploading File...');
console.log("i am the if" );
// File Info
var profileImageOriginalName = req.file.profileimage.originalname;
var profileImageName = req.file.profileimage.name;
var profileImageMime = req.file.profileimage.mimetype;
var profileImagePath = req.file.profileimage.path;
var profileImageExt = req.file.profileimage.extension;
var profileImageSize = req.file.profileimage.size;
} else {
// Set a Default Image
var profileImageName = 'noimage.png';
console.log("im the else");
}
console.log(req.file);
console.log(profileImageName);
// Form Validation
req.checkBody('name','Name field is required').notEmpty();
req.checkBody('email','Email field is required').notEmpty();
req.checkBody('email','Email not valid').isEmail();
req.checkBody('username','Username field is required').notEmpty();
req.checkBody('password','Password field is required').notEmpty();
req.checkBody('password2','Password do not match').equals(req.body.password);
// Check for errors
var errors = req.validationErrors();
if(errors){
res.render('register', {
errors: errors,
name: name,
email: email,
username: username,
password: password,
password2: password2
});
} else {
var newUser = new User({
name: name,
email: email,
username: username,
password: password,
profileImage: profileImageName
});
}
// Create User
User.createUser(newUser, function(err, user){
if(err)throw err;
console.log(user);
});
//Success Message
req.flash('success', 'You are noew registered and may log in');
res.location('/');
res.redirect('/');
});
module.exports = router;
# 2-models/user.js#
var mongoose = require('mongoose');
//var bcrypt = require('bcrypt');
mongoose.connect('mongodb://localhost/nodeauth');
var db = mongoose.connection;
// User Schema
var UserSchema = mongoose.Schema({
username: {
type: String,
index: true
},
password: {
type: String,
required: true,
bcrypt: true
},
email: {
type: String
},
name: {
type: String
},
profileImage: {
type: String
}
});
var User = module.exports = mongoose.model('User', UserSchema);
module.exports.createUser = function(newUser,callback){
// Create User
newUser.save(callback);
}
# 3-register.jade which containing the form#
extends layout
block content
h1 Register
p Please register using the form below
ul.errors
if errors
each error, i in errors
li.alert.alert-danger #{error.msg}
form(method='post', action='/users/register',endtype='multipart/form-data')
.form-group
label Name
input.form-control(name='name', type='text', placeholder='Enter Name')
.form-group
label Email
input.form-control(name='email', type='email', placeholder='Enter Email')
.form-group
label Username
input.form-control(name='username', type='text', placeholder='Usernamee')
.form-group
label Password
input.form-control(name='password', type='password', placeholder='Enter Password')
.form-group
label Password
input.form-control(name='password2', type='password', placeholder='Confirm Password')
.form-group
label Profile Image
input.form-control(name='profileImage', type='file')
input.btn.btn-default(name='submit', type='submit', values='Register')**