回答:
@muruは正しいですが、jsonエンコードを送信しようとしている場合、base64データはコマンドラインには大きすぎる可能性があり、次のようなものを好む場合があります。
(echo -n '{"image": "'; base64 ~/Pictures/1.jpg; echo '"}') |
curl -H "Content-Type: application/json" -d @- http://some/url/
-X POST
によって暗示されます-d
。
Bashは単一引用符で展開されません。'{"image" : $( base64 ~/Pictures/1.jpg )}'
そのまま送信されます。代わりに、試してください:
'{"image" : "'"$( base64 ~/Pictures/1.jpg)"'"}'
(コマンド置換を行う前に開始引用符を終了してから、もう一度引用符を開きます。)
$()
base64の出力行がいくつかのcurl引数に分割される場合は、二重引用符で囲む必要があります。
$ curl -d "name=Avatar&username=avatar&password=A1234567&email=avatar@user.com&token=16b185fe421d5017afb11691681906ed" --data-urlencode 'avatar='"$( base64 ~/Pictures/avatar004.jpg)"'' --data-urlencode 'image='"$( base64 ~/Pictures/avatar001.jpg)"'' --data-urlencode 'picture='"$( base64 ~/Pictures/577383.jpg)"'' http://localhost:8000/api/v1/users/register/