2

发出发布请求时出现意外字段错误?这是我的节点 js 代码

var express = require('express');
var multer = require('multer');
var bodyParser = require('body-parser');
var cors = require('cors');
var app = express();
var PORT = process.env.PORT || 3000;
var upload = multer({ dest: 'uploads/' })


// use of body parser
app.use(bodyParser.urlencoded({
    extended: true
}));

app.use(bodyParser.json());
app.use(cors());




app.post('/upload',upload.single('avatar'), function (req, res,next) {
console.log(req.file);
console.log('hello');
res.send({data:'sss'})
});


app.listen(PORT, () => {
    console.log(`App is listening to ${PORT}`);
})

当我通过我的服务点击我的服务时,我正在使用这个插件上传文件https://www.npmjs.com/package/multerpostman我得到以下错误

**App is listening to 3000
Error: Unexpected field
    at makeError (C:\Users\B0207296\WebstormProjects\uploadFile\node_modules\multer\lib\make-error.js:12:13)
    at wrappedFileFilter (C:\Users\B0207296\WebstormProjects\uploadFile\node_modules\multer\index.js:40:19)
    at Busboy.<anonymous> (C:\Users\B0207296\WebstormProjects\uploadFile\node_modules\multer\lib\make-middleware.js:114:7)
    at emitMany (events.js:147:13)
    at Busboy.emit (events.js:224:7)
    at Busboy.emit (C:\Users\B0207296\WebstormProjects\uploadFile\node_modules\busboy\lib\main.js:38:33)
    at PartStream.<anonymous> (C:\Users\B0207296\WebstormProjects\uploadFile\node_modules\busboy\lib\types\multipart.js:213:13)
    at emitOne (events.js:116:13)
    at PartStream.emit (events.js:211:7)
    at HeaderParser.<anonymous> (C:\Users\B0207296\WebstormProjects\uploadFile\node_modules\dicer\lib\Dicer.js:51:16)**

邮递员形象

在此处输入图像描述

4

2 回答 2

5

在 PostMan 中,将密钥重命名为avatar

编辑:上传文件的multer期望是,不是nameavatarfile_test

于 2018-08-16T21:45:37.640 回答
0

我的问题是roter文件中的错误。

我有:

router.post(
   "/addArticle",
   upload.single("image"),
   upload.array("rowPics"),
   (req, res, next)=>{...some code}
)

我的目标是上传一个名称为 的image文件和多个文件作为一个名称为rowPics. 但两者upload.singleupload.array不能同时使用。为了上传具有不同名称的多个文件,我必须更改我的代码,如下所示:

router.post(
   "/addArticle", 
   upload.fields([
      {name: "image", maxCount: 1},
      {name: "rowPics"}
   ]),
   (req, res, next)=>{...some code}
)

...some code部分中,我解析了我的输入,如下所示:

let image = req.files.image[0].path
let rowPics = req.files.rowPics.map(el=>el.path)

问题解决了。

于 2020-12-19T13:36:56.933 回答