使用 curl 发送 base64 编码的图像

An *_*ser 8 command-line curl 14.04

我试图从使用命令行发送base64编码的图像curlbase64这样的:

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

但是,我收到回复说这$是一个意外的标记。如何发送 base64 编码的图像?

meu*_*euh 23

@muru 是正确的,但是如果您尝试发送一个json编码,您的 base64 数据对于命令行来说可能太大,您可能更喜欢这样的东西:

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

-X POST暗示-d


mur*_*uru 7

Bash 不会在单引号中展开。'{"image" : $( base64 ~/Pictures/1.jpg )}'按原样发送。相反,请尝试:

'{"image" : "'"$( base64 ~/Pictures/1.jpg)"'"}'
Run Code Online (Sandbox Code Playgroud)

(在执行命令替换之前退出开头的引号,然后再次打开引号。)

  • 你需要双引号 `$()` 否则 base64 输出行将被分成几个 curl 参数。 (2认同)