[前端開發]form-data和x-www-form-urlencoded的區別

  • 在後台開發時,之前做了文件的上傳,用的是form-data,但並不知其區別。今天遇到了req.body為空的情況,切換成了x-www-form-urlencoded解決

form-data

就是http請求中的multioart/form-data ,它會將表單的數據處理為一條消息,以標籤為單元,用分隔符分開。

  • 既可以上傳鍵值對,也可以上傳文件,當上傳的欄位是文件時,會有Content-Type來說明是文件類型,Content-Disposition來說明欄位的資訊。

x-www-form-urlencoded

就是application/x-www-form-urlencoded 會將表單中的數據轉換為鍵值,用&分隔

  • 當form的action為get時,瀏覽器用x-www-form-urlencoded的編碼方式,將表單數據編碼為
    (name1=value1&name2=value2…),然後把這個字元串append到url後面,用?分隔,跳轉到這個新的url。
  • 當form的action為post時,瀏覽器將form數據封裝到http body中,然後發送到server。
    這個格式不能提交文件。
  • 單post鍵值時,用form-data獲取的req.body為空對象