我尝试将一些表单数据发送到我的节点服务器,但是
req.body
在节点端没有任何表单字段
var express = require('express')
var app = express()
var path = require('path')
var bodyParser = require('body-parser')
app.use(bodyParser.urlencoded({
extended: true
}));
app.get('/', function (req, res) {
res.sendFile('index.html')
})
app.post('/sendmail', function (req, res) {
const formData = req.body.formData
这是我从浏览器发送的内容
fetch('/send', {
method: 'POST',
body: new FormData(form)
})
在开发工具中我只能看到Referer中传递的数据,也许这是我的问题
body-parser
不处理多部分主体,这就是 FormData
提交的内容。
multer
这样的模块。
例如,要检索请求的(常规)字段:
const multer = require('multer');
const upload = multer();
app.post('/send', upload.none(), (req, res) => {
const formData = req.body;
console.log('form data', formData);
res.sendStatus(200);
});
也试试这个
稍微改进了@robertklep答案,可以将响应作为json发送
const express = require('express');
const app = express();
const multer = require('multer');
const upload = multer();
app.post('/send', upload.any(), (req, res) => {
console.log('data', req.body);
res.setHeader('Content-Type', 'application/json');
res.send(req.body);
});
npm i multer --save
import express from 'express'
import multer from 'multer'
const app = express();
app.use(express.json());
app.use(express.urlencoded({ extended: true }));
app.use(multer().none());
如果您不想要上传功能,请添加
app.use(multer().none());
。