cUrl: Daftar argumen terlalu panjang


15

Saya mendapatkan kesalahan: Argument list too longketika mencoba menggunakan cUrl untuk mengirim file di base64 di dalam tubuh JSON saya.

Saya menggunakan sesuatu seperti ini:

DATA=$( base64 "$FILE" )

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

Apakah ada cara lain untuk mendapatkan DATA di tubuh JSON saya?

Mempertimbangkan bahwa saya perlu membaca file di sistem file saya, mengubahnya menjadi base64 dan kemudian mengirimkannya ke dalam tubuh.


Jawaban:


19

Jika file yang disandikan base64 terlalu besar untuk masuk dalam daftar argumen Anda harus meneruskannya melalui file. Salah satu cara yang lebih mudah yang dapat saya pikirkan adalah melewatinya melalui input standar. Dari halaman manual curl , Anda dapat menggunakannya -d @-untuk membaca dari stdin alih-alih baris perintah.

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

Anda juga dapat menggunakan versi ini yang lebih saya sukai:echo { "data": "$DATA" } | curl -X POST -H "Content-Type: application/json" -d @- "$HOST"
morhook
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.