0

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')**
Aseel Ashraf
  • 681
  • 6
  • 12

0 Answers0