发出 post 请求时发生意外字段错误?
unexpected field error while making post request?
我在发出 post 请求时遇到意外的字段错误?这是我的节点 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/multer
当我通过 postman
访问我的服务时,我遇到了以下错误
**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)**
post人像
在 PostMan 中,将密钥重命名为 avatar
编辑:
multer
期望上传文件的 name
为 avatar
,而不是 file_test
我的问题是 roter
文件中的一个错误。
我有:
router.post(
"/addArticle",
upload.single("image"),
upload.array("rowPics"),
(req, res, next)=>{...some code}
)
我的目标是上传一个名为 image
的文件和多个名为 rowPics
的数组文件。但是upload.single
和upload.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)
问题解决了。
在 Postman 中您输入的键名错误,您在代码中输入的 FileInterceptor 名称与您的 Postman 键名中使用的名称相同。我希望这对您有所帮助 更多指南屏幕截图如下!
我在发出 post 请求时遇到意外的字段错误?这是我的节点 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/multer
当我通过 postman
访问我的服务时,我遇到了以下错误
**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)**
post人像
在 PostMan 中,将密钥重命名为 avatar
编辑:
multer
期望上传文件的 name
为 avatar
,而不是 file_test
我的问题是 roter
文件中的一个错误。
我有:
router.post(
"/addArticle",
upload.single("image"),
upload.array("rowPics"),
(req, res, next)=>{...some code}
)
我的目标是上传一个名为 image
的文件和多个名为 rowPics
的数组文件。但是upload.single
和upload.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)
问题解决了。
在 Postman 中您输入的键名错误,您在代码中输入的 FileInterceptor 名称与您的 Postman 键名中使用的名称相同。我希望这对您有所帮助 更多指南屏幕截图如下!