1. ホーム
  2. http

multipart/form-data と application/octet-stream, application/x-www-form-urlencoded の違いについて

2022-02-19 18:15:36

シナリオの再現。

.net(wcf)バックエンドにファイルをアップロードする際、いつもアップロードに失敗します。バックエンドはContent-Typeがapplication/octet-streamであることを要求しますが、私はmultipart/form-dataメソッドを使用し、content-typeはmultipart/form-dataであり、次に私はこれらが2つの異なるコンテンツタイプであると判明してチェックしたのです。 httpリクエストボディでは、データの構成が異なっている そのため、バックエンドが受信に失敗する。

multipart/form-dataを使用します。

1. 通常のKey-Valueペアと(複数の)ファイルKey-Valueペアの両方が送信可能です。

2、HTTP仕様のContent-Typeは、このタイプを含まない、唯一のPOST送信メソッドで使用することができ、httpクライアント(ブラウザ、Javaのhttpclient)拡張に属します。

3、通常ブラウザのフォーム、またはhttpクライアント(java httpclient)で使用されます。

ページ内では、フォームの 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

アプリケーション/オクテットストリーム

1. バイナリのみ提出可能で、ファイルを提出する場合は、1つのファイルのみ提出可能です。 バックエンドの受信パラメータは1つだけで、ストリーム(またはバイト配列)にすることができます

2. HTTP仕様のContent-Typeの一種

3. めったに使われない

application/x-www-form-urlencoded の略。

1、httpコンテンツタイプの仕様の一部ではない、通常はブラウザのフォーム送信に使用される、データ編成形式:name1=value1&name2=value2、ポストはhttpボディに入れ、取得、アドレスバーに表示されます。

2. すべてのキーと値は、urlencodeされます。 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 クロスリファレンス

フルスタック開発経験9年、個人公開番号をフォローしてください。