cUrl: Liste d'arguments trop longue


15

Je reçois l'erreur: Argument list too longlorsque j'essaie d'utiliser cUrl pour envoyer un fichier en base64 à l'intérieur du corps de mon JSON.

J'utilise quelque chose comme ça:

DATA=$( base64 "$FILE" )

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

Existe-t-il un autre moyen d'obtenir les DONNÉES dans le corps de mon JSON?

Tenez compte du fait que je dois lire un fichier dans mon système de fichiers, le transformer en base64 puis l'envoyer à l'intérieur du corps.


Réponses:


19

Si le fichier encodé en base64 est trop gros pour tenir dans la liste des arguments, vous devrez le passer via un fichier. L'un des moyens les plus simples auxquels je peux penser est de le passer via une entrée standard. À partir de la page de manuel curl , vous pouvez utiliser -d @-pour lire à partir de stdin au lieu de la ligne de commande.

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

Vous pouvez également utiliser cette version je l'aime plus:echo { "data": "$DATA" } | curl -X POST -H "Content-Type: application/json" -d @- "$HOST"
morhook
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.