快递,文件上传图片上传不工作

问题描述:

,所以我想允许用户上传的轮廓图像有个人资料,我得到了形式还挺我多么希望它现在,但我一直运行到一个错误,说TypeError: Cannot read property 'profilePicUpload' of undefined快递,文件上传图片上传不工作

即使我几乎可以肯定,我所有的代码是罚款这里是routes.js

// app/routes.js 
    var mysql = require('mysql'); 
    var dbconfig = require('../config/database'); 
    var connection = mysql.createConnection(dbconfig.connection); 
    const fileUpload = require('express-fileupload'); 

    module.exports = function(app, passport) { 

     app.get('/logout', function(req, res) { 
      req.logout(); 
      res.redirect('/'); 
     }); 
     // ===================================== 
     // HOME PAGE (with login links) ======== 
     // ===================================== 
     app.get('/', function(req, res) { 
      res.render('login.ejs', { message: req.flash('loginMessage') }); // load the index.ejs file 
     }); 

     // ===================================== 
     // LOGIN =============================== 
     // ===================================== 
     // show the login form 
     app.get('/login', function(req, res) { 

      // render the page and pass in any flash data if it exists 
      res.render('login.ejs', { message: req.flash('loginMessage') }); 
     }); 


     app.use(fileUpload()); 

     app.post('/upload', function(req, res) { 
     console.log(req.files.profilePicUpload); 
     }); 



     passport.serializeUser(function(user, done) { 
      done(null, user.id); 
     }); 


     passport.deserializeUser(function(id, done) { 
      User.findById(id, function(err, user) { 
       done(err, user); 
      }); 
     }); 
     // process the login form 
     app.post('/login', passport.authenticate('local-login', { 
       successRedirect: '/mainchat', // redirect to the secure profile section 
       failureRedirect: '/login', // redirect back to the signup page if there is an error 
       failureFlash: true // allow flash messages 
      }), 
      function(req, res) { 
       console.log("hello"); 

       if (req.body.remember) { 
        req.session.cookie.maxAge = 1000 * 60 * 3; 
       } else { 
        req.session.cookie.expires = false; 
       } 
       res.redirect('/'); 
      }); 

     // ===================================== 
     // SIGNUP ============================== 
     // ===================================== 
     // show the signup form 
     app.get('/signup', function(req, res) { 
      // render the page and pass in any flash data if it exists 
      res.render('signup.ejs', { message: req.flash('signupMessage') }); 
     }); 

     // process the signup form 
     app.post('/signup', passport.authenticate('local-signup', { 
      successRedirect: '/mainchat', // redirect to the secure profile section 
      failureRedirect: '/signup', // redirect back to the signup page if there is an error 
      failureFlash: true // allow flash messages 
     })); 

     // ===================================== 
     // PROFILE SECTION ========================= 
     // ===================================== 
     // we will want this protected so you have to be logged in to visit 
     // we will use route middleware to verify this (the isLoggedIn function) 
     app.get('/profile', isLoggedIn, function(req, res) { 
      var aboutUser = connection.query("SELECT about FROM users WHERE username = ?", req.user, function(err, rows) { 
       res.render('profile.ejs', { 
        user: req.user, 
        about: rows 
       }); 
      }); 
     }); 

     app.get('/mainchat', isLoggedIn, function(req, res) { 
      var username = req.user.displayName; 
      res.render('mainchat.ejs', username); 
      console.log(req.user.displayName) 
     }); 
     // ===================================== 
     // LOGOUT ============================= rows.forEach(function(row) {= 
     // ===================================== 
     app.get('/logout', function(req, res) { 
      req.logout(); 
      res.redirect('/'); 
     }); 



    }; 

    // route middleware to make sure 
    function isLoggedIn(req, res, next) { 

     // if user is authenticated in the session, carry on 
     if (req.isAuthenticated()) 
      return next(); 

     // if they aren't redirect them to the home page 
     res.redirect('/'); 
    } 

这里是我上传的形式

  <form id="form" action="/upload" method="POST"> 
       <div class="fileUpload" id="profile-picture-upload"> 

        <input name="profilePictureToUpload" type="file" id="profile-picture-upload" class="upload" /> 
       </div> 
       <input type="submit" name="profilePicUpload" id="upload-profilePic-button"></input> 
      </form> 

当我按下输入该强制t显示我上面说过的错误?有人可以帮我

打印出req.files的内容。即console.log(req.files); 你应该使用req.files.profilePictureToUpload来代替吗?与req.files.profilePicUpload相反;

如果您没有看到该属性,则可能是文件内容未正确追加到请求对象上的问题。

此外,您不需要将文件上载全局应用于您正在使用的每条路线。只是将其用于实际上传的任何端点:

app.post('/upload', fileUpload(), function(req, res) { 
    console.log(req.files.profilePicUpload); 
    });