cUrl: Список аргументів занадто довгий


15

Я отримую помилку: Argument list too longпри спробі використовувати cUrl для надсилання файлу в base64 всередині корпусу мого JSON.

Я використовую щось подібне:

DATA=$( base64 "$FILE" )

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

Чи є інший спосіб отримати дані в тілі мого JSON?

Враховуйте, що мені потрібно прочитати файл у моїй файловій системі, перетворити його на base64 і потім надіслати його всередині тіла.


можливо , пов'язані: stackoverflow.com/questions/19003855 / ...
fredtantini

Відповіді:


19

Якщо файл, кодований base64, занадто великий, щоб увійти до списку аргументів, вам доведеться передати його через файл. Один з найпростіших способів, що я можу придумати, - це передати його через стандартний ввід. На сторінці "man curl" ви можете використовувати -d @-для читання з stdin замість командного рядка.

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

Ви також можете використовувати цю версію, мені це більше подобається:echo { "data": "$DATA" } | curl -X POST -H "Content-Type: application/json" -d @- "$HOST"
morhook
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.