Argument list too long
Pojawia 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:
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ń.źródło
echo { "data": "$DATA" } | curl -X POST -H "Content-Type: application/json" -d @- "$HOST"