enviar imagen codificada en base64 usando curl


8

Estoy tratando de enviar una imagen codificada en base64 desde la línea de comando usando curly base64así:

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

Sin embargo, recibo una respuesta que dice que $es un token inesperado. ¿Cómo envío la imagen codificada en base64?

Respuestas:


20

@muru es correcto, sin embargo, si está intentando enviar una codificación json, sus datos de base64 pueden ser demasiado grandes para la línea de comando y puede preferir algo como esto:

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

El -X POSTestá implícito en -d.


Si, esta mucho mejor.
muru

Hola meuh, fallé cuando intento ejecutar esta línea de comando combinada desde el código PHP, $ html = shell_exec ($ str); si copio el código $ str y ejecuto directamente en la línea de comando, está bien. Pero shell_exec no funcionó, por favor ayuda :( muchas gracias.
Bảo Nam

Jaja, creé el archivo bash, chmod + x ese archivo, luego escribí mi comando en el archivo y ejecuté shell_exec ('/ ruta al archivo sh / xxx.sh'); trabajé como un encanto. Gracias.
Bảo Nam

1
@ BảoNam Ok, buena solución. No sé mucho sobre php, y no veo ninguna razón obvia por la que la primera versión no funcionó. Busque pistas en el archivo de registro de errores de su servidor. Creo que sería mejor comenzar una nueva pregunta cuando php está involucrado.
Meuh

5

Bash no se expande entre comillas simples. '{"image" : $( base64 ~/Pictures/1.jpg )}'se envía tal cual. En cambio, intente:

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

(Salga de la cita de apertura antes de realizar la sustitución del comando y luego vuelva a abrir una cita).


2
Necesita comillas dobles; de lo $()contrario, las líneas de salida de base64 se dividirán en varios argumentos curl.
meuh

Múltiples archivos de imágenes y comando de datos$ 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/
Moreno
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.