cUrl: lista de argumentos demasiado larga


15

Recibo el error: Argument list too longcuando intento usar cUrl para enviar un archivo en base64 dentro del cuerpo de mi JSON.

Estoy usando algo como esto:

DATA=$( base64 "$FILE" )

curl -X POST -H "Content-Type: application/json" -d '{
   "data": "'"$DATA"'"
}' $HOST

¿Hay alguna otra forma de obtener los DATOS en el cuerpo de mi JSON?

Tenga en cuenta que necesito leer un archivo en mi sistema de archivos, transformarlo en base64 y luego enviarlo dentro del cuerpo.


Respuestas:


19

Si el archivo codificado en base64 es demasiado grande para caber en la lista de argumentos, tendrá que pasarlo a través de un archivo. Una de las formas más fáciles en que puedo pensar es pasarlo a través de la entrada estándar. Desde la página de manual de curl , puede usar -d @-para leer desde stdin en lugar de la línea de comando.

curl -X POST -H "Content-Type: application/json" -d @- "$HOST" <<CURL_DATA
{ "data": "$DATA" }
CURL_DATA

También puedes usar esta versión que me gusta más:echo { "data": "$DATA" } | curl -X POST -H "Content-Type: application/json" -d @- "$HOST"
morhook
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.