web-dev-qa-db-ja.com

curlを使用してbase64エンコード画像を送信します

次のようにcurlbase64を使用して、コマンドラインからbase64でエンコードされた画像を送信しようとしています。

curl -X POST -H "Content-Type: application/json" -d '{"image" : $( base64 ~/Pictures/1.jpg )}' http://some/url/  

ただし、$は予期しないトークンであるという応答が返されます。 base64でエンコードされた画像を送信するにはどうすればよいですか?

8
Little Child

@muruは正しいですが、jsonエンコードを送信しようとしている場合、base64データはコマンドラインに対して大きすぎる可能性があり、次のようなものを好むかもしれません:

(echo -n '{"image": "'; base64 ~/Pictures/1.jpg; echo '"}') |
curl -H "Content-Type: application/json" -d @-  http://some/url/ 

-X POST-dによって暗示されています。

18
meuh

Bashは一重引用符で展開されません。 '{"image" : $( base64 ~/Pictures/1.jpg )}'はそのまま送信されます。代わりに、試してください:

'{"image" : "'"$( base64 ~/Pictures/1.jpg)"'"}'

(コマンド置換を行う前に開始引用符を終了し、再度引用符を開きます。)

5
muru