cUrl: Argumentliste zu lang

15

Ich Argument list too longerhalte die Fehlermeldung: Wenn ich versuche, mit cUrl eine Datei in base64 innerhalb meines JSON-Körpers zu senden.

Ich benutze so etwas:

DATA=$( base64 "$FILE" )

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

Gibt es eine andere Möglichkeit, die DATEN in den Körper meines JSON zu bekommen?

Beachten Sie, dass ich eine Datei in meinem Dateisystem lesen, in base64 umwandeln und dann im Körper senden muss.

Mateo
quelle
Vielleicht im Zusammenhang: stackoverflow.com/questions/19003855/…
fredtantini

Antworten:

19

Wenn die base64-codierte Datei zu groß ist, um in die Argumentliste zu passen, müssen Sie sie über eine Datei übergeben. Eine der einfacheren Möglichkeiten, die ich mir vorstellen kann, besteht darin, sie über die Standardeingabe zu übergeben. Auf der Curl-Manpage können Sie -d @-anstelle der Befehlszeile von stdin lesen.

curl -X POST -H "Content-Type: application/json" -d @- "$HOST" <<CURL_DATA
{ "data": "$DATA" }
CURL_DATA
jw013
quelle
Sie können auch diese Version verwenden Ich mag es mehr:echo { "data": "$DATA" } | curl -X POST -H "Content-Type: application/json" -d @- "$HOST"
Morhook