multer 从传入请求中删除正文

问题描述 投票:0回答:1

我从一个简单的 Angular 应用程序以

FormData
的形式发送一个 http 发布请求,将内容类型设置为
multipart/form-data
,后端接收传入的请求并使用 multer

解析它

multer解析请求后总是发现

req.body
为null

这里是最小复制

重现步骤

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

这里的问题是它显示

{body:null,..}
它应该是
{body: {content: "test"}}

node.js angular express multipartform-data multer
1个回答
0
投票

问题出在前端的

toFormData
方法,它构造了不正确的
formData
,这就是为什么它在服务器上没有被解析/为空。

两种修复方法:

  1. payload
    更改为对象,而不是数组:
payload = { content: 'test' };
  1. 要将
    payload
    用作数组,您需要使用
    for..of
    循环而不是
    for..in
    来迭代数据数组,然后对于每个对象,您应该动态附加键/值,这可以通过循环对象方便地完成键,然后使用
    formData
    .
     将键值对附加到 
    .reduce

尝试用这个替换它:

export function toFormData(data: any): FormData {

   let formData = new FormData();

     for (let element of data) {

       Object.keys(el).reduce((formData:FormData, key:string) => {
         formData.append(key, element[key]);
         return formData;
       }, formData);

     }

     return formData;
}
© www.soinside.com 2019 - 2024. All rights reserved.