Here is request payload I can see in console
------WebKitFormBoundaryW5j4rbM04jMUgOkU
Content-Disposition: form-data; name="file"; filename="Screenshot from 2016-12-12 18-34-26.png"
Content-Type: image/png
------WebKitFormBoundaryW5j4rbM04jMUgOkU
Content-Disposition: form-data; name="userId"
12
------WebKitFormBoundaryW5j4rbM04jMUgOkU
Content-Disposition: form-data; name="isAdmin"
true
------WebKitFormBoundaryW5j4rbM04jMUgOkU--
I need to read userId which is there
name="userId"
12
but my req.body is blank JSON {}
. how to read this?
app.js
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));
routes.js
var employeeDocumentStorage = multer.diskStorage({
destination: function (req, file, cb) {
****//need to read data here****
console.log("uploading");
console.log(file);
var x = (JSON.parse(req.body));
console.log(x)
//var code = JSON.parse(req.body.model).empCode;
var dest = 'public/documents/vss811/';
mkdirp(dest, function (err) {
if (err) cb(err, dest);
else cb(null, dest);
});
},
filename: function (req, file, cb) {
cb(null, Date.now()+'-'+file.originalname);
}
});
As Alex has said in comments, you won't get this with body-parser. Your request payload shows that you seem to be using form-data
content type.
You can use multer to get form-data payloads - and your route already shows you're using multer (var employeeDocumentStorage = multer.diskStorage({
)):
const express = require('express')
const upload = require('multer')({ dest: '/tmp/' });
app.post('/some-route', upload.single('name'), function (req, res, next) {
console.log(req.body.userId); // should show 12
console.log(req.files); // that's your file there.
// do stuff.
});