multipart/form-data與application/octet-stream的區別、application/x-www-form-urlencoded
情景再現:
上傳檔案到.net(wcf)後臺時,總是上傳不成功,後臺要求Content-Type是application/octet-stream,我使用multipart/form-data方式,content-type是multipart/form-data,後來查了查這是兩種不同的內容型別,在http的請求體中,資料組織方式不一樣,所以,後臺接收失敗。
multipart/form-data:
1、既可以提交普通鍵值對,也可以提交(多個)檔案鍵值對。
2、HTTP規範中的Content-Type不包含此型別,只能用在POST提交方式下,屬於http客戶端(瀏覽器、java httpclient)的擴充套件
3、通常在瀏覽器表單中,或者http客戶端(java httpclient)中使用。
頁面中,form的enctype是multipart/form-data,提交時,content-type也是multipart/form-data。
multipart/form-data格式,
POST http://www.xx.com/myproject/service1 Host: 192.168.0.201:8694 Content-Type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW Cache-Control: no-cache Postman-Token: c3d85a6c-9849-7e3e-5c89-5b994b335b1d ----WebKitFormBoundary7MA4YWxkTrZu0gW Content-Disposition: form-data; name="name1" value1 ----WebKitFormBoundary7MA4YWxkTrZu0gW Content-Disposition: form-data; name="name2" value2 ----WebKitFormBoundary7MA4YWxkTrZu0gW Content-Disposition: form-data; name="file1"; filename="94b5b232gw1ewlx3p595wg20ak0574qq.gif" Content-Type: image/gif ----WebKitFormBoundary7MA4YWxkTrZu0gW Content-Disposition: form-data; name="file2"; filename="1443175219259.jpg" Content-Type: image/jpeg ----WebKitFormBoundary7MA4YWxkTrZu0gW
application/octet-stream
1、只能提交二進位制,而且只能提交一個二進位制,如果提交檔案的話,只能提交一個檔案,後臺接收引數只能有一個,而且只能是流(或者位元組陣列)
2、屬於HTTP規範中Content-Type的一種
3、很少使用
application/x-www-form-urlencoded
1、不屬於http content-type規範,通常用於瀏覽器表單提交,資料組織格式:name1=value1&name2=value2,post時會放入http body,get時,顯示在在位址列。
2、所有鍵與值,都會被urlencoded,請檢視urlencoder
資料組織格式
POST http://www.xx.com/myproject/service HTTP/1.1 Host: 192.168.0.201:8694 Content-Type: application/json Cache-Control: no-cache Postman-Token: f5f6240c-08d3-8695-9473-607038f71eaa name11=file1&name2=value2
參考:
HTTP Content-type對照表
--------------------- 作者:乾淨的句號 來源:CSDN 原文:https://blog.csdn.net/wangjun5159/article/details/49644507?utm_source=copy 版權宣告:本文為博主原創文章,轉載請附上博文連結!