web-dev-qa-db-fra.com

envoyer une image encodée en base64 en utilisant curl

J'essaie d'envoyer une image codée en base64 à partir de la ligne de commande en utilisant curl et base64 comme ceci:

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

Cependant, je reçois une réponse disant que $ est un jeton inattendu. Comment envoyer l'image codée en base64?

8
Little Child

@muru est correct, cependant, si vous essayez d'envoyer un json encodant vos données base64, il est peut-être trop volumineux pour la ligne de commande et vous préférerez peut-être quelque chose comme ça:

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

Le -X POST est impliqué par -d.

18
meuh

Bash ne se développe pas entre guillemets simples. '{"image" : $( base64 ~/Pictures/1.jpg )}' est envoyé tel quel. Au lieu de cela, essayez:

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

(Quittez le devis d'ouverture avant de procéder à la substitution de commande, puis ouvrez-le à nouveau.)

5
muru