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であり、次に私はこれらが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
参考
フルスタック開発経験9年、個人公開番号をフォローしてください。
関連
-
[解決済み] ExpressJSのX-Powered-Byを削除する方法 [重複]。
-
[解決済み] リバースルーティングとは何ですか?
-
[解決済み] ERR_INVALID_CHUNKED_ENCODING エラーの修正方法を教えてください。
-
[解決済み] 要求されたURLの長さが、このサーバーの容量制限を超えていませんか?
-
[解決済み] リソースを "アンキャッシュ" する
-
[解決済み] 負の配列サイズ例外
-
[解決済み] 0.0.0.0:80」と「:80」でのリスニングの違いは何ですか?
-
[解決済み] IISファイルのダウンロードがハングアップ/タイムアウトする - sc-win32-status = 64
-
java.lang.NoClassDefFoundError: クラスを初期化できませんでした エラーの理由
-
youtubeマッチチャンネル(チャンネル)
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
ハートビート・エフェクトのためのHTML+CSS
-
HTML ホテル フォームによるフィルタリング
-
HTML+cssのボックスモデル例(円、半円など)「border-radius」使いやすい
-
HTMLテーブルのテーブル分割とマージ(colspan, rowspan)
-
ランダム・ネームドロッパーを実装するためのhtmlサンプルコード
-
Html階層型ボックスシャドウ効果サンプルコード
-
QQの一時的なダイアログボックスをポップアップし、友人を追加せずにオンラインで話す効果を達成する方法
-
sublime / vscodeショートカットHTMLコード生成の実装
-
HTMLページを縮小した後にスクロールバーを表示するサンプルコード
-
html のリストボックス、テキストフィールド、ファイルフィールドのコード例