簡體   English   中英

如果我不使用 multer,ExpressJS 請求正文為空

[英]ExpressJS request body is empty if i don't use multer

我的 express 應用程序有這個非常奇怪的問題,我只是想訪問通過表單數據通過 post 請求發送的 req.body 數據,但不幸的是,當我嘗試訪問 request.body 中的這些值時出現未定義的錯誤,但什么是奇怪的是,如果我使用 multer 中間件(我在另一條路線上使用它來上傳文件)我沒有收到此錯誤。 我已經配置了 express 提供的默認正文解析器。

//body pharser
app.use(express.json());
app.use(
  express.urlencoded({
    extended: true,
  })
);

//multer configuration
const ImageUpload = multer({
  storage: storage,
  limits: { fileSize: 4194304 },
  fileFilter: Imagfilter,
});

//this will return undefined
app.post("/available",(req, res) => {
  console.log(req.body.name);
}

//but this will return the value without any issues
app.post(
  "/available",
  ImageUpload.fields([
    { name: "nicImageFront", maxCount: 1 },
    { name: "nicImageBack", maxCount: 1 },
  ]),
  (req, res) => {
 console.log(req.body.name);
}

這沒什么好奇怪的。

FormData對象生成多部分請求。 他們必須這樣做,這就是他們支持文件上傳的方式。

FormData 接口提供了一種方法來輕松構造一組表示表單字段及其值的鍵/值對,然后可以使用 XMLHttpRequest.send() 方法輕松發送。 如果編碼類型設置為“multipart/form-data”,它使用與表單相同的格式。

Multer 旨在解析多部分請求。

urlencoded中間件旨在解析 urlencoded 請求,而不是多部分請求。

json中間件旨在解析 JSON 編碼請求,而不是多部分請求。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM