首頁  >  文章  >  web前端  >  post請求上傳文件和文字時http格式

post請求上傳文件和文字時http格式

一个新手
一个新手原創
2017-09-27 10:25:104049瀏覽

服務端通常是根據請求頭(headers)中的Content-Type 欄位來獲知請求中的訊息主體是用何種方式*編碼*,再對主體進行解析。所以說到 POST 提交資料方案,包含了 Content-Type 和訊息主體編碼方式兩部分。

application/x-www-form-urlencoded

最基本的form表單結構,用於傳遞字元參數的鍵值對,請求結構如下

POST  HTTP/1.1Host: www.demo.comCache-Control: no-cachePostman-Token: 81d7b315-d4be-8ee8-1237-04f3976de032Content-Type: application/x-www-form-urlencodedkey=value&testKey=testValue

請求頭中的Content-Type設定為application/x-www-form-urlencoded; 提交的的資料,請求body中依照key1=value1&key2=value2 編碼,key和value都要進行urlEncode;

multipart/form-data

#這是上傳檔案時,最常見的資料提交方式,看一下請求結構

POST  HTTP/1.1Host: www.demo.comCache-Control: no-cachePostman-Token: 679d816d-8757-14fd-57f2-fbc2518dddd9Content-Type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW------WebKitFormBoundary7MA4YWxkTrZu0gW
Content-Disposition: form-data; name="key"value------WebKitFormBoundary7MA4YWxkTrZu0gW
Content-Disposition: form-data; name="testKey"testValue------WebKitFormBoundary7MA4YWxkTrZu0gW
Content-Disposition: form-data; name="imgFile"; filename="no-file"Content-Type: application/octet-stream<data in here>------WebKitFormBoundary7MA4YWxkTrZu0gW--

首先請求頭中的Content-Type 是multipart/form-data; 並且會隨機產生一個boundary, 用於區分請求body中的各個資料 ; 每個資料以–boundary 開始, 緊接著換行,下面是內容描述訊息, 接著換2行, 接著是資料; 然後以–boundary– 結尾, 最後換行;

文字資料和檔案,圖片的內容描述是不相同的
文字參數:

Content-Disposition: form-data; name="key"Content-Type: text/plain; charset=UTF-8Content-Transfer-Encoding: 8bit

檔案參數:

Content-Disposition: form-data; name="imgFile"; filename="no-file"Content-Type: application/octet-streamContent-Transfer-Encoding: binary

每個換行都是\r\ n ;

application/json

text/xml

text/plain

請求頭的Content-Type設定為這幾個也很常見,不過一般是在web前端開發中,請求body沒有固定結構, 直接傳輸對應資料的資料流, 不必和上面2種樣, 還要用固定的結構包起來, 只不過資料對應的是json, xml, 文本;

以上是post請求上傳文件和文字時http格式的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn