cUrl: Bağımsız değişken listesi çok uzun


15

Hatayı alıyorum: Argument list too longcUrl, JSON gövdesi içindeki base64 dosya göndermek için çalışırken.

Ben böyle bir şey kullanıyorum:

DATA=$( base64 "$FILE" )

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

DATA'yı JSON'umun gövdesine almanın başka bir yolu var mı?

Dosya sistemimdeki bir dosyayı okumam, bunu base64'e dönüştürmem ve daha sonra gövdeye göndermem gerektiğini dikkate alın.


Yanıtlar:


19

Base64 ile kodlanmış dosya, bağımsız değişken listesine sığmayacak kadar büyükse, dosyayı bir dosya üzerinden iletmeniz gerekir. Aklıma gelen en kolay yollardan biri, onu standart girdiden geçirmek. Gönderen bukle adam sayfasında kullanabileceğiniz -d @-yerine komut satırının stdin'i okuma.

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

Ayrıca bu versiyonu daha çok seviyorum:echo { "data": "$DATA" } | curl -X POST -H "Content-Type: application/json" -d @- "$HOST"
Morhook
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.