Я получаю сообщение об ошибке: Argument list too long
при попытке использовать cUrl для отправки файла в base64 внутри тела моего JSON.
Я использую что-то вроде этого:
DATA=$( base64 "$FILE" )
curl -X POST -H "Content-Type: application/json" -d '{
"data": "'"$DATA"'"
}' $HOST
Есть ли другой способ получить данные в теле моего JSON?
Учтите, что мне нужно прочитать файл в моей файловой системе, преобразовать его в base64, а затем отправить его в тело.
Ответы:
Если файл в кодировке base64 слишком большой, чтобы поместиться в список аргументов, вам придется передать его через файл. Один из самых простых способов, которые я могу придумать, - передать его через стандартный ввод. Со страницы man curl вы можете использовать
-d @-
чтение из stdin вместо командной строки.источник
echo { "data": "$DATA" } | curl -X POST -H "Content-Type: application/json" -d @- "$HOST"