微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

node.js – 无法app.use(multer) “需要中间件功能”错误

我刚刚开始学习NodeJS,我遇到了一个问题。我想将文件上传到我的服务器。为此,我搜索并找到这个模块 multer.做为例子在GitHub工程:

var express = require('express');
var multer = require('multer');
var upload = multer({ dest: 'uploads/' });

var app = express()

app.post('/uploadImage',upload.single('image'),function(req,res) {
    console.log(req.file);
});

在使用FormData将图像发布到/ uploadImage时,图像保存在uploads /目录中。事情是图像保存有一个奇怪的名字,我想保存它的原始名称
要这样做,我明白,我必须调用app.use(multer({dest:’uploads /’}))’,然后我可以访问req.file在我的函数像:

app.post('/uploadImage',res) {
    console.log(req.file);
});

但我得到一个错误尝试app.use():

TypeError: app.use() requires middleware functions
    at EventEmitter.use (project\node_modules\express\lib\application
.js:209:11)

Im使用NodeJS 0.12.7和Express 4.13.1

如何实现上传?谢谢。

解决方法

你需要使用app.use(multer({dest:’./ uploads /’})),其形式如下:

app.use(multer({dest:'./uploads/'}).single(...));
app.use(multer({dest:'./uploads/'}).array(...));
app.use(multer({dest:'./uploads/'}).fields(...));

即:

app.use(multer({dest:'./uploads/'}).single('photo'));

并确保有类似的东西:

<form action="/postPhotos" enctype="multipart/form-data" method="post">
    <input type="file" name="photo">
    <input type="submit" value="Upload photo">
</form>

在你的html。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐