Multer给req.file未定义

我正在尝试使用multer上传文件。 代码如下:

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); }); 

我从控制台中获得输出

字段名称1嗨

字段名称2未定义

字段名称3未定义

POST / 200 15.536 ms – –

你的表单属性不正确,改为encryptenctype 。 您的文件将通过req.file可用

更新:
用扩展名重命名文件:

 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); }); 

不使用:

cb(null, file.fieldname + '-' + Date.now() + '.' + ext);

而不是使用下面的代码

 cb(null, Date.now() + '.jpg');