複数画像ファイルを指定し、APIを繰り返し叩きたかった。
登録系のAPIにPOSTでデータを送信するとき、
以下のフォームに値を入れて送信ボタンを押すのと同じことを、
curlコマンドで実現したい。
とある事情により、
「フォームに対してSeleniumでケースを作成→繰り返し実行」という方法は採用しなかった。
このAPIでは、一つのフィールド(=my_images)で複数の画像をまとめて受け取っている。
<form action="http://xxx.api.com/register" method="POST" enctype="multipart/form-data">
名前: <input type="text" name="my_name"></input>
価格: <input type="text" name="my_price"></input>
説明: <input type="text" name="my_description"></input>
画像1: <input type="file" name="my_images"></input>
画像2: <input type="file" name="my_images"></input>
<input type="submit" value="send data"/>
</form>
このようにすると、うまくいった。
file001.jpgが、後から指定されたfile002.jpgに上書きされているということもない模様。
curl -F "my_name=King" -F "my_price=500" -F "my_description=This is cool." \
-F "my_images=@file001.jpg" \
-F "my_images=@file002.jpg" \
http:/xxx.api.com/register
マニュアル(日本語訳はこちら)によると、
curl -F ... "my_images=@file001.jpg,file002.jpg" ...
のように、ファイル名をつなげて指定できるようだったし、
直感的にも分かりやすかったのだが、
「区切り文字は","じゃなくて";"にしろ」というエラーが出て失敗した。
※ ";"の後にはファイルの種類(;type=image/jpeg)とかを書くはずなのだが・・・。
目的は達成したけれども、どこかスッキリしない。