使用Multer上传节点js中的文件

我能够使用下面的节点JS上传图像。

var express = require('express'); var router = express.Router(); var multer = require('multer'); var done = false; router.get( '/upload', function(req , res) { res.render('upload'); }); router.post( '/upload' , multer({ dest: './uploadImages/'}).single('idUpload') , function(req , res) { //-- logic for uploading file comes here res.send('done'); }); module.exports = router; 

根据我的理解,一个中间件可以有2个参数,首先是path('/ upload')和第二个callback函数(req,res)。

但是在上面的代码中间件有三个参数,第二个是“multer({dest:'./uploadImages/'}).single('idUpload')”

我想知道在node / express JS中有多less个参数可以用于中间件function。

中间件是这种forms的

 var first = function(req, res, next){ req.count = 1; //do something in this case attach count item to req object next(); // call next middleware } var second = function(req, res, next){ req.count += 1; next(); } 

如果我们想在postpath中使用上面的两个中间件,可以使用它们

 router.post('/mypath', first, second, function(req, res){ res.send(req.count) // will show 2 on response } 

就像上面的情况一样,我们可以使用更多的中间件。 现在通过router.post()它接受path作为第一个参数作为path和任意数量的中间件。 至于上传的问题,确保你有uploadImages目录,path是正确的,请求头有Content-Type:'multipat / form-data',文件字段名为idUpload