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。

相关文章

这篇文章主要介绍“基于nodejs的ssh2怎么实现自动化部署”的...
本文小编为大家详细介绍“nodejs怎么实现目录不存在自动创建...
这篇“如何把nodejs数据传到前端”文章的知识点大部分人都不...
本文小编为大家详细介绍“nodejs如何实现定时删除文件”,内...
这篇文章主要讲解了“nodejs安装模块卡住不动怎么解决”,文...
今天小编给大家分享一下如何检测nodejs有没有安装成功的相关...