node.js - Node Multer 意外字段

标签 node.js multer

我正在使用 multer npm 模块将文件上传到我的应用程序。

我定义的multer函数是允许单个文件上传到文件系统。运行时一切正常;问题是在我上传文件后出现以下错误。任何关于在哪里看的建议表示赞赏。

错误:

Unexpected field

Error: Unexpected field
    at makeError (c:\Users\Dev\WebstormProjects\Crunch\node_modules\multer\lib\make-error.js:12:13)
    at wrappedFileFilter (c:\Users\Dev\WebstormProjects\Crunch\node_modules\multer\index.js:39:19)
    at Busboy.<anonymous> (c:\Users\Dev\WebstormProjects\Crunch\node_modules\multer\lib\make-middleware.js:97:7)
    at Busboy.emit (events.js:118:17)
    at Busboy.emit (c:\Users\Dev\WebstormProjects\Crunch\node_modules\multer\node_modules\busboy\lib\main.js:31:35)
    at PartStream.<anonymous> (c:\Users\Dev\WebstormProjects\Crunch\node_modules\multer\node_modules\busboy\lib\types\multipart.js:205:13)
    at PartStream.emit (events.js:107:17)
    at HeaderParser.<anonymous> (c:\Users\Dev\WebstormProjects\Crunch\node_modules\multer\node_modules\busboy\node_modules\dicer\lib\Dicer.js:51:16)
    at HeaderParser.emit (events.js:107:17)
    at HeaderParser._finish (c:\Users\Dev\WebstormProjects\Crunch\node_modules\multer\node_modules\busboy\node_modules\dicer\lib\HeaderParser.js:70:8) 

app.js

var multer = require('multer');
var app = express();
var fs = require('fs');

//. . . 

var upload = multer({ dest: 'upload/'});
var type = upload.single('file');

app.post('/upload', type, function (req,res) {
  var tmp_path = req.files.recfile.path;
  var target_path = 'uploads/' + req.files.recfile.name;
fs.readFile(tmp_path, function(err, data)
{
  fs.writeFile(target_path, data, function (err)
  {
    res.render('complete');
  })
});

索引.hbs

<form action="/upload" method="post" enctype="multipart/form-data">
    <input type="file" name='recfile' placeholder="Select file"/>
    <br/>
    <button>Upload</button>
</form>

#Package.json
  "dependencies": {
    "body-parser": "~1.13.2",
    "cookie-parser": "~1.3.5",
    "debug": "~2.2.0",
    "easy-zip": "0.0.4",
    "express": "~4.13.1",
    "hbs": "~3.1.0",
    "less-middleware": "1.0.x",
    "morgan": "~1.6.1",
    "multer": "~1.0.0",
    "serve-favicon": "~2.3.0"
  }
}

最佳答案

<NAME>你在multer的upload.single(<NAME>)中使用功能必须与您在 <input type="file" name="<NAME>" ...> 中使用的功能相同.

所以你需要改变

var type = upload.single('file')

var type = upload.single('recfile')

在你的 app.js 中

关于node.js - Node Multer 意外字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31530200/

相关文章:

node.js - req.file 的 console.log 上 req.file 的值未定义的错误

node.js - 将 Multer 验证错误传递给 React 组件

node.js - 通过exec或spawn从node.js启动couchdb

javascript - 无法运行下载的 Angular 项目

node.js - 穆特,node.js : memory isn't purged after image upload and process

node.js - Angular,未找到图像(GET 404),但运行 ng build 后显示图像

mysql - 无法使用sequelize连接带有外键的2个表

javascript - Node.js:for循环后执行

mysql - 使用 sequelize 向列添加评论

javascript - 使用 multer 将图像上传到 Node.js 不起作用