Curl でファイルと JSON データを一緒に投稿するにはどうすればいいですか? 質問する

Curl でファイルと JSON データを一緒に投稿するにはどうすればいいですか? 質問する

私は次の curl コマンドを使用してファイルを投稿しています:

curl -i -F file=@./File.xlsm -F name=file -X POST http://example.com/new_file/

ここで、ファイルに関するいくつかの情報を (JSON として) ファイルと一緒に送信したいと思います。

curl -i -H "Content-Type: application/json" -d '{"metadata": {"comment": "Submitting a new data set.", "current": false }, "sheet": 1, "row": 7 }' -F file=@./File.xlsm -F name=file http://example.com/new_file/

Curl は、このように完全に間違った方法で使用されることに非常に不満を抱いており、この場合は「HTTP リクエストは 1 つしか選択できません」と表示されます。わかりました。では、ファイル添付とそれらの POST 変数を 1 つの curl HTTP リクエストに組み込むにはどうすればよいでしょうか。

ベストアンサー1

私は、JSON 形式のメタデータとともに複数のファイルを受け入れる同様のエンドポイントの開発に成功しました。

curl -i -X POST -H "Content-Type: multipart/mixed" -F "blob=@/Users/username/Documents/bio.jpg" -F "metadata={\"edipi\":123456789,\"firstName\":\"John\",\"lastName\":\"Smith\",\"email\":\"[email protected]\"};type=application/json" http://localhost:8080/api/v1/user/

メタデータ要求部分の最後にが追加されていることに注意してください;type=application/json。異なるタイプの複数のファイルをアップロードする場合は、 -F 値の最後に MIME タイプを定義できます。

@RequestPart を使用して、これが Spring MVC 4.3.7 で機能することを確認しました。そのインスタンスでの鍵は、@RequestMapping アノテーションに consumers 値を指定しないことです。

おすすめ記事