cUrl: lista argumentów jest za długa


15

Argument list too longPojawia się błąd: gdy próbuję użyć cUrl, aby wysłać plik w base64 w ciele mojego JSON.

Używam czegoś takiego:

DATA=$( base64 "$FILE" )

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

Czy istnieje inny sposób na uzyskanie danych w ciele mojego JSON?

Weź pod uwagę, że muszę odczytać plik w moim systemie plików, przekształcić go w base64, a następnie wysłać go do ciała.


Odpowiedzi:


19

Jeśli plik zakodowany w standardzie base64 jest zbyt duży, aby zmieścić się na liście argumentów, musisz przekazać go przez plik. Jednym z łatwiejszych sposobów jest przekazanie go za pomocą standardowego wejścia. Ze strony podręcznika curl można użyć -d @-do odczytu ze standardowego wejścia zamiast z wiersza poleceń.

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

Możesz także skorzystać z tej wersji. Podoba mi się to bardziej:echo { "data": "$DATA" } | curl -X POST -H "Content-Type: application/json" -d @- "$HOST"
morhook,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.