2016-08-07 8 views
0

У меня есть форма, которая запрашивает текст и файл. Я использую multer для загрузки файла. Проблема в том, что я не могу получить текст с req.body, если я использую enctype=multipart/form-dataНе удается получить текст тела вместе с upload, Express js

Route файл

router.post('/new-job', function(req,res,next){ 
    upload(req,res,function(err) { 
    if(err) { 
     return res.end("Error uploading file."); 
    } 
    }); 

    var newJob = { 
    job_name: req.body.job_name, //Cannot retrieve this two 
    job_desc: req.body.job_desc, 
    }; 

    var newJobData = new Jobs(newJob); 
    newJobData.save(function(err,user){ 
    if(err) 
    console.log(err); 
    }); 

    res.render('jobs/new-job', {job_added:true}); 
}); 

Multer конфиги

var multer = require('multer'); 
var storage = multer.diskStorage({ 
    destination: function (req, file, callback) { 
    callback(null, 'public/uploads'); 
    }, 
    filename: function (req, file, callback) { 
    callback(null, file.originalname); 
    } 
}); 

Примечания

  • Я использовал метод пост
  • Если я регистрирую req.body.job_name он возвращает неопределенные
  • Если я удалить enctype=multipart/form-data я могу получить текст очень хорошо, хотя я не могу загрузить файл

ответ

1

Вы не можете получить доступ к req.body содержимого пока вы не разобрали запрос, поэтому либо переместить код внутри upload() обратного вызова, или избавиться от явного upload() вызова целиком и просто поставить upload до вашего маршрута обработчика:

router.post('/new-job', upload, function(req, res, next) { 
    var newJob = { 
    // ... 
+0

Я не знал, что мне не хватает такой простой вещи, спасибо @mscdex – Adam

 Смежные вопросы

  • Нет связанных вопросов^_^