web-dev-qa-db-ja.com

Postman Chrome拡張機能を使用したマルチパート/混合コンテンツの送信

POST= Postpartを使用したmultipart/mixedリクエストの作成に苦労していますChrome拡張機能

カールリクエストは次のとおりです。

curl -H "Content-Type: multipart/mixed" 
-F "metadata=@simple_json.json; type=application/json "
-F "[email protected]; type=image/jpg" -X POST http://my/api/item -i -v

応答の興味深い部分

コンテンツの長さ:41557

期待:100継続

コンテンツタイプ:multipart/mixed;境界= ---------------------------- 8aaca457e117

  • 細かいtransfer.c:1037以外の追加要素:0 0
  • 持続的接続を備えたHTTP 1.1以降、パイプラインをサポート

そして、私がPostmanを使用するとき enter image description here

私はそのような応答を得ています

{"message":"Could not parse multipart servlet request;
 nested exception is org.Apache.commons.fileupload.FileUploadException: 
 the request was rejected because no multipart boundary was     
 found","type":"error","status":500,"requestId":"1861eloo6fpio"}

それだけです-私はそのエラーを取り除きたいです。さらに情報が必要な場合は、お問い合わせください:)

47
pbaranski

私もこの問題に直面していました。短い答え:PostmanリクエストからContent-Typeヘッダーを削除してください。

長い話は、マルチパートリクエストのContent-Typeはかなり特別なものである必要があるということです。

multipart/form-data; boundary=----WebKitFormBoundaryzeZR8KqAYJyI2jPL

問題は、境界が重要であり、アップロードされるファイルを分離するために使用される境界とexactlyが一致する必要があることです。解決策は簡単です。Content-Typeを指定しないでください!ファイルをアップロードすると、Postmanは自動的に上記のコンテンツタイプを追加しますが、PostmanまたはChromeがマルチパートコンテンツを分離するために使用しているもので境界が埋められます。

この動作を確認するには、Chrome開発者ツール(Postman内))を使用して、マルチパートデータのContent-Typeヘッダーに加えて、追加されるContent-Dispositionヘッダーを調べます。手動で構築するのも苦痛です(そして、Postman内では不可能です)。

:私の答えは、multipart/form-data答えが必要な人のためのソリューションです。 OPはmultipart/mixedソリューションを探していました。このシナリオでは、私の答えでは不十分です。そうは言っても、多くの人がmultipart/form-dataソリューションを望んでいるように見えるので、ここに答えを残します。

86
Kirk Woll

このコメントを残しました: https://github.com/postmanlabs/postman-app-support/issues/1104

Ninja update:これが他の人に役立つかどうかはわかりませんが、複数のファイルタイプ/コンテンツタイプがアップロードされている特定のシナリオの回避策があります単一のマルチパートPOST要求。

  1. ヘッダーContent-Typemultipart/mixedに設定します。
  2. Bodyform-dataオプションを選択します。
  3. すべてのアイテムをファイルに変換します。文字列コンテンツはテキストファイルなどになります。
  4. fileを選択して各ファイルを追加し、キー名を追加します。

このアプローチでは、各Content-TypeまたはContent-Dispositionを実際に手動で指定する必要はありません。ここでの秘Theは、関連するすべてのコンテンツを永続的なファイルタイプにシリアル化することでした。テキストの場合は、「ファイルに変換する」手順を無視できます:)

0
Adam Gerard