正文解析器无法使用POST-MAN表单数据

时间:2019-07-01 03:56:50

标签: node.js express

我尝试发送图像,表单数据中的一些文本,然后尝试console.log(req.body)总是return {},我已经读过很多关于此的主题

这是我的route / index.js

const express = require('express');
const router = express.Router();
const bodyParser = require('body-parser');

router.use(bodyParser.urlencoded({extended:true}));
router.use(bodyParser.json());
router.route('/').post(AdminController.list);

我尝试添加urlencoded,但仍然无法正常工作。

1 个答案:

答案 0 :(得分:0)

bodyParser无法处理multipart/form-data

尝试Multer,From official docs

  

Multer是用于处理multipart / form-data的node.js中间件,   主要用于上传文件。它写在busboy的顶部   以获得最高效率

     

Multer将主体对象和一个或多个文件对象添加到请求中   宾语。主体对象包含的文本字段的值。   表单中,文件或文件对象包含通过   表格。

查看有效示例:

const Multer = require('multer');
const multer = Multer({
    storage: Multer.memoryStorage(),
    limits: {
        fileSize: 5 * 1024 * 1024 // no larger than 5mb, you can change as needed.
    }
});

app.post('/upload', multer.single('file'), (req, res) => {
    // req.body will contain the text fields, if there were any
    fs.createWriteStream('./uploads/' + req.file.originalname)
    var fileWriteStream = fs.createWriteStream(req.file.originalname);
    fileWriteStream.on('finish', () => {
        console.log('file saved successfully');
        res.send({ message: 'file saved successfully' })
    })
    fileWriteStream.end(req.file.buffer)
})