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.


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

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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.