當我在未指定enctype
的情況下設置表單時,Firefox會自動將其設置爲application/x-www-form-urlencoded
而req.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>
做一個console.log(JSON.stringify(req.body, null, 2));
打印出一個空的對象時enctype
是multipart/form-data
當沒有指定enctype
時,它打印出像:
{
category: "standard",
userid: "foo"
}
任何理由這是怎麼回事?
感謝。我是Express的新手,剛剛使用標準設置。沒有意識到這是需要在app.js –
@robertklep中改變的東西,你可能是正確的(不能確定沒有看到OPs Express代碼),而是'express.multipart'(真正的Connect中間件)已棄用,不應使用。看到我的答案替代品。 –
@EthanBrown我並不完全不同意你的看法,但是國際海事組織,如果有東西被棄用,它應該被刪除。只要它仍然可用,我會使用它。順便說一句,與[unstable notices](http://nodejs.org/api/stream.html#stream_stream)類似。 – robertklep