senden base64-kodierte Bilder mit curl

8

Ich versuche, ein Base64-kodiertes Bild von der Kommandozeile zu senden, indem ich curl und base64 wie folgt benutze:

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

Ich bekomme jedoch eine Antwort zurück, die besagt, dass $ ein unerwartetes Token ist. Wie sende ich das base64-kodierte Bild?

    
Little Child 20.07.2015, 04:30

2 Antworten

16

@muru hat jedoch Recht wenn Sie versuchen, ein json zu senden, das Ihre base64-Daten codiert möglicherweise zu groß für die Befehlszeile und Sie bevorzugen möglicherweise etwas wie folgt:

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

-X POST wird von -d impliziert.

    
meuh 20.07.2015 12:30
5

Bash wird nicht in einfache Anführungszeichen erweitert. '{"image" : $( base64 ~/Pictures/1.jpg )}' wird unverändert gesendet. Versuchen Sie stattdessen:

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

(Beenden Sie das Eröffnungsangebot, bevor Sie die Befehlsersetzung ausführen, und öffnen Sie dann erneut ein Angebot.)

    
muru 20.07.2015 06:55

Tags und Links