将表单类型更改为 multipart/form-data 会导致 req.body 为空

A. *_*uff 5 forms json node.js express

当我在没有指定 的情况下设置表单时enctype,Firefox 会自动将其设置为application/x-www-form-urlencodedreq.body包含输入到表单中的所有参数的漂亮的 JSON 表示。但是当我将 enctype 更改multipart/form-data req.body为突然为空时。

这是我的表格:

<form action="/create" method="post" enctype="multipart/form-data">
  <fieldset>
    <div>
      <label>Category:</label>
    </div>
    <div>
      <select name="category">
      <option value="standard">Standard</option>
      <option value="custom">Custom</option>
    </div>
    <div>
      <input type="text" name="description">
    </div>
    <div>
      <label>User ID:</label>
    </div>
    <div>
      <input type="text" name="userid">
    </div>
    <div>
      <input type="submit" value="Go">
    </div>
  </fieldset>
</form>
Run Code Online (Sandbox Code Playgroud)

console.log(JSON.stringify(req.body, null, 2));enctypeismultipart/form-data和 whenenctype未指定时,执行 a 会打印出一个空对象,它会打印出如下内容:

{
  category: "standard",
  userid: "foo"
}
Run Code Online (Sandbox Code Playgroud)

发生这种情况的任何原因?

rob*_*lep 1

听起来你正在使用express.urlencoded()而不是express.multipart().