NodeJS multer从传入的请求中删除正文

vyswwuz2  于 2023-05-06  发布在  Node.js
关注(0)|答案(1)|浏览(126)

我从一个简单的Angular应用程序以FormData的形式发送一个http post请求,将内容类型设置为multipart/form-data,后端接收传入的请求并使用multer解析它
在multer解析请求后,我总是发现req.body为空
这是一个minimal reproduction

重现步骤

  • 安装依赖项npm install
  • 从后端目录运行后端部分npm start
  • 从前端目录运行前端部分npm start
  • localhost:4200上打开浏览器,它会直接向后台发送一个HTTP请求,而不需要填写任何表单,收到的响应显示在同一页面上。

这里的问题是,它显示的是{body:null,..},而实际上应该是{body: {content: "test"}}

gg58donl

gg58donl1#

问题出在toFormData方法的前端,它构造了不正确的formData,这就是为什么它在服务器上没有被解析/为空。
有两种方法可以解决这个问题:
1.将payload更改为对象,而不是数组:

payload = { content: 'test' };

1.要将payload用作数组,需要循环一个数组,然后循环对象键。
尝试用这个替换它:

export function toFormData(data: any): FormData {
  let formData = new FormData();
  for (let obj of data) {
    for (let key in obj) {
      let element = obj[key];
      formData.append(key, element);
    }
  }

  return formData;
}

相关问题