配置multer将文件上传到nodejs服务器

时间:2016-07-23 13:11:53

标签: node.js express

快速路由器设置如下:

var router = require('express').Router();
var multer  = require('multer');

var uploading = multer({
  dest: './uploads/',
  limits: {fileSize: 1000000, files:1},
});
router.post('/upload', uploading.single('avatar'), function(req, res) {
  console.log('success'); 
});
 module.exports = router;

我正在尝试上传文件:

curl -F "image=@/Users/runtimeZero/Desktop/nassau.jpg" localhost:3000/auth/upload

快递服务器抛出以下错误:

Error: Unexpected field
    at makeError (/Users/.../node_modules/multer/lib/make-error.js:12:13)
    at wrappedFileFilter (/Users/../node_modules/multer/index.js:39:19)
    ...
    ...
    at HeaderParser.push (/Users/.../node_modules/multer/node_modules/busboy/node_modules/dicer/lib/HeaderParser.js:46:19)
    at Dicer._oninfo (/Users/.../node_modules/multer/node_modules/busboy/node_modules/dicer/lib/Dicer.js:197:25)

从multer文件来看,这似乎非常简单。然而,实际使用它时并非如此。我错过了什么?

1 个答案:

答案 0 :(得分:0)

如果查看multer readme,您会看到multer()返回一个包含各种函数的对象,这些函数会根据您的需要返回不同的中间件。

例如,要接受name为“头像”的单个文件:

var upload = multer({dest: './uploads/'});
router.post('/upload', upload.single('avatar'), function(req, res) {
  console.log('success'); 
});