1. 程式人生 > >multipart/form-data與application/octet-stream的區別、application/x-www-form-urlencoded

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  版權宣告:本文為博主原創文章,轉載請附上博文連結!