在下菜鸟刚入,试着用express练习下,需要文件上传,于是用了 multer ,但是当我app.use(multer()),加入中间件启动的时候,控制台报出如下错误 : /Users/humucai/Documents/jsworkspace/chatroom/node_modules/express/lib/application.js:209 throw new TypeError(‘app.use() requires middleware functions’); ^ TypeError: app.use() requires middleware functions at EventEmitter.use (/Users/humucai/Documents/jsworkspace/chatroom/node_modules/express/lib/application.js:209:11) at Object.<anonymous> (/Users/humucai/Documents/jsworkspace/chatroom/app.js:31:5) at Module._compile (module.js:460:26) at Object.Module._extensions…js (module.js:478:10) at Module.load (module.js:355:32) at Function.Module._load (module.js:310:12) at Module.require (module.js:365:17) at require (module.js:384:17) at Object.<anonymous> (/Users/humucai/Documents/jsworkspace/chatroom/bin/www:7:11) at Module._compile (module.js:460:26) at Object.Module._extensions…js (module.js:478:10) at Module.load (module.js:355:32) at Function.Module._load (module.js:310:12) at Function.Module.runMain (module.js:501:10) at startup (node.js:129:16) at node.js:814:3
请各位大神指导下。
我只是希望把图片文件以Buffer类型直接存入mongodb中,我希望能够从request.body中取出文件Buffer,不知道有什么好的方法。multer官方文档示例都是直接 app = express() ,然后 app.post('xxx'.multer().array(),function(req,res){});我希望在 router = express.Router(); router.post(),在这样的router中操作文件,还请各位指点一下。
- 报错应该是版本问题,我试了一下[email protected][email protected]下面这个写法没报错;
- multer支持buffer输出到内存,记得看文档,或者按照你提到的写法也可以拿到buffer;
- app.post()和router.post()调用的是express里同一个函数,参数一样就行了。
附:第一条的代码
var app = require('express')();
var multer = require('multer');
app.use(multer());
app.listen(3000);
@albin3 非常感谢能够回答,的确当我我使用[email protected]的是没有那样的错误的,问题已经解决了,multer当前npm最新版是1.0.1,已经没有app.use(multer())这样的用法,顺便问下[email protected]没有找到,npm最新版是4.13.2。 这样就可以了:
var express = require('express');
var router = express.Router();
var multer = require('multer');
router.post('/upload',multer().single('file'),function(req,res){
console.log(req.file);//file
console.log(req.body);
});
module.exports = router;