Answers:
@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/