envia uma imagem codificada em base64 usando curl

8

Estou tentando enviar uma imagem codificada em base64 a partir da linha de comando usando curl e base64 da seguinte forma:

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

No entanto, recebo uma resposta dizendo que $ é um token inesperado. Como faço para enviar a imagem codificada em base64?

    
por Little Child 20.07.2015 / 04:30

2 respostas

16

@muru está correto, no entanto se você está tentando enviar um json codificando seus dados base64 pode ser muito grande para a linha de comando e você pode preferir algo assim:

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

O -X POST está implícito em -d .

    
por meuh 20.07.2015 / 12:30
5

O Bash não se expande entre aspas simples. '{"image" : $( base64 ~/Pictures/1.jpg )}' é enviado como está. Em vez disso, tente:

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

(Saia da citação de abertura antes de fazer a substituição do comando e abra uma citação novamente.)

    
por muru 20.07.2015 / 06:55