我刚刚开始学习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); });
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。