Reputation: 16851
I am trying to upload a file using multer
. Here's the code:
HTML
<form action="/" method="post" encrypt="multipart/form-data" >
<input name="upl" type="file" ></br>
<input type="text" name="onenee" ></br>
<input type="submit" value="submit" />
</form>
NODE JS
var express = require('express');
// var csrf = require('csurf');
var passport = require('passport');
var Product = require('../models/product');
var multer = require('multer');
var upload = multer({ dest: 'public/uploads/' });
var router = express.Router();
router.post('/', upload.single('upl'), function (req, res, next) {
console.log(' Field name1 '+ req.body.onenee);
console.log(' Field name2 '+ req.files);
console.log(' Field name3 '+ req.file);
res.send(req.file);
});
OUTPUT I GET FROM THE CONSOLE
Field name1 hi
Field name2 undefined
Field name3 undefined
POST / 200 15.536 ms - -
Upvotes: 3
Views: 3454
Reputation: 1
Do not use:
cb(null, file.fieldname + '-' + Date.now() + '.' + ext);
Instead of use this below code
cb(null, Date.now() + '.jpg');
Upvotes: 0
Reputation: 1502
Your form attribute is incorrect, change encrypt
to enctype
instead.
Your file will be available through req.file
UPDATE:
Rename your file with extension:
var storage = multer.diskStorage({
destination: function(req, file, cb) {
cb(null, './public/uploads/'); // Make sure this folder exists
},
filename: function(req, file, cb) {
var ext = file.originalname.split('.').pop();
cb(null, file.fieldname + '-' + Date.now() + '.' + ext);
}
}),
upload = multer({ storage: storage }).single('upl');
router.post('/', upload, function (req, res, next) {
console.log('body', req.body);
console.log('file', req.file);
});
Upvotes: 4