Estou recebendo o erro: Argument list too long
ao tentar usar cUrl para enviar um arquivo em base64 dentro do corpo do meu JSON.
Estou usando algo parecido com isto:
DATA=$( base64 "$FILE" )
curl -X POST -H "Content-Type: application/json" -d '{
"data": "'"$DATA"'"
}' $HOST
Existe alguma outra maneira de obter os DADOS no corpo do meu JSON?
Leve em consideração que eu preciso ler um arquivo no meu sistema de arquivos, transformá-lo em base64 e enviá-lo para dentro do corpo.
Respostas:
Se o arquivo codificado em base64 for muito grande para caber na lista de argumentos, você precisará passá-lo por um arquivo. Uma das maneiras mais fáceis em que consigo pensar é passá-lo via entrada padrão. Na página do manual curl , você pode usar
-d @-
para ler a partir de stdin, em vez da linha de comando.fonte
echo { "data": "$DATA" } | curl -X POST -H "Content-Type: application/json" -d @- "$HOST"