次のようにcurl
とbase64
を使用して、コマンドラインからbase64でエンコードされた画像を送信しようとしています。
curl -X POST -H "Content-Type: application/json" -d '{"image" : $( base64 ~/Pictures/1.jpg )}' http://some/url/
ただし、$
は予期しないトークンであるという応答が返されます。 base64でエンコードされた画像を送信するにはどうすればよいですか?
@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)"'"}'
(コマンド置換を行う前に開始引用符を終了し、再度引用符を開きます。)