|
阅读:8160回复:0
express+multer抛出错误:'app.use() requires middleware functions'
使用express4. bodyParser不在提供文件上传的功能,要使用文件上传,需要使用到中间件multer.
下载模块,并且进行引用 。 multer=require('multer') 然后进行配置 app.use(multer({dest:'./'})); 目前express版本是4.13.3,multer的版本是1.0.1 运行时,却直接报错。错误如下: throw new TypeError('app.use() requires middleware functions'); 最后,通过百度找到了原因,是multer的版本问题。 解决方法有两个: 1. multer 需要装 0.1.8 的版本。 npm install multer@0.1.8 2. 版本不变,继续使用1.0.1 那已经不能这样写了 app.use(multer({dest:'./'})); 你要在路由里面写 var multer = require('multer'); var upload = multer({dest: './public/images/user'}); router.post('/upload', upload.fields([ {name: 'file1'}, {name: 'file2'}, {name: 'file3'}, {name: 'file4'}, {name: 'file5'} ]), function(req, res, next){ for(var i in req.files){ console.log(req.files); } req.flash('success', '文件上传成功!'); res.redirect('/upload'); }); 上面这个例子是我同时提交5个name, 他提供3个方法 .single() .array() .fields() .single()是一个文件 例如 upload.single('avatar')//avatar是name名 .array()是同样name名的多个文件 例如 upload.array('photos', 12)//photos是name名,第二个参数是最大12个为name名的文件 .fields()是多个文件 例如 upload.fields([{ name: 'avatar', maxCount: 1 }, { name: 'gallery', maxCount: 8 }]) //maxCount是可选 参考:https://segmentfault.com/q/1010000003050818 |
|
最新喜欢:
|