cUrl: Lista de argumentos muito longa

13

Estou recebendo o erro: Argument list too long ao tentar usar a cUrl para enviar um arquivo em base64 dentro do corpo do meu JSON.

Estou usando algo assim:

DATA=$( base64 "$FILE" )

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

Existe alguma outra maneira de obter os DATA no corpo do meu JSON?

Leve em conta que eu preciso ler um arquivo no meu sistema de arquivos, transformá-lo em base64 e depois enviá-lo para dentro do corpo.

    
por Mateo 15.12.2014 / 15:16

1 resposta

13

Se o arquivo codificado em base64 for muito grande para caber na lista de argumentos, você terá que passá-lo por meio de um arquivo. Uma das maneiras mais fáceis de pensar é transmiti-lo via entrada padrão. A partir da página de manual curl , você pode usar -d @- para ler stdin em vez da linha de comando .

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

Tags