React,Node js,mongoDB-如何使用FormData进行发布,放置,删除?

时间:2018-09-13 01:19:54

标签: node.js reactjs post fetch axios

如何使用formdata创建邮政服务?

我通过Axios发送了formdata。 但是,节点表达服务器上的“ req.body.title”值是空的。 因此,现在我以以下格式发送抓取。 但是我需要将文件上传到服务器,所以我想使用formData发送它。

let bodys = 'title=a1&contents=b'
fetch("http://localhost:5000/test", {
            method : 'post',
            headers : {
                'Content-type' : 'application/x-www-form-urlencoded; charset=UTF-8'
            },
            body: bodys
        })
        .then(function(response){
            console.log('Request Succeded ', response);
        })
        .catch(function (error){
            console.log('Failed ', error)
        })

我使用带有新FormData()的append编写了新数据, 我检查了FormData是否包含React的值。 但是,node-express服务器没有进入主体。

请让我知道该怎么办...

2 个答案:

答案 0 :(得分:1)

尝试发送FormData对象而不是原始字符串作为请求正文。

const bodys = new FormData();

bodys.append('title', 'a1');
bodys.append('contents', 'b');

此表格数据将在express.js服务器中的request.body中提供。

编辑:要解析express.js中的FormData,您需要像multer

这样的中间件。
const upload = require('multer');

app.use('/', upload.any(), yourRouteHandler);

答案 1 :(得分:0)

您只发送了一个字符串,所以

您可以像下面那样进入身体

  let bodys = 'title=a1&contents=b'
 console.log(req.body); //will print title and contents as you are sending

如果要分别访问标题和内容,则必须将数据作为对象发送

  const bodys = {“title”: “a1”, “contents”: “b”}
  console.log(“title”, req.body.title); //will print a1
  console.log(“contents”, req.body.contents); //will print b

选择此线程以获取更多详细信息https://github.com/github/fetch/issues/263