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を使用するとき
私はそのような応答を得ています
{"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"}
それだけです-私はそのエラーを取り除きたいです。さらに情報が必要な場合は、お問い合わせください:)
私もこの問題に直面していました。短い答え: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
ソリューションを望んでいるように見えるので、ここに答えを残します。
このコメントを残しました: https://github.com/postmanlabs/postman-app-support/issues/1104
Ninja update:これが他の人に役立つかどうかはわかりませんが、複数のファイルタイプ/コンテンツタイプがアップロードされている特定のシナリオの回避策があります単一のマルチパートPOST要求。
Content-Type
をmultipart/mixed
に設定します。Body
でform-data
オプションを選択します。file
を選択して各ファイルを追加し、キー名を追加します。このアプローチでは、各Content-Type
またはContent-Disposition
を実際に手動で指定する必要はありません。ここでの秘Theは、関連するすべてのコンテンツを永続的なファイルタイプにシリアル化することでした。テキストの場合は、「ファイルに変換する」手順を無視できます:)