cUrl: Danh sách đối số quá dài


15

Tôi đang gặp lỗi: Argument list too longkhi cố gắng sử dụng cUrl để gửi tệp trong base64 bên trong phần thân JSON của tôi.

Tôi đang sử dụng một cái gì đó như thế này:

DATA=$( base64 "$FILE" )

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

Có cách nào khác để lấy DATA trong phần thân JSON của tôi không?

Hãy xem xét rằng tôi cần phải đọc một tệp trong hệ thống tệp của mình, chuyển đổi nó thành base64 và sau đó gửi nó vào bên trong cơ thể.


Câu trả lời:


19

Nếu tệp được mã hóa base64 quá lớn để phù hợp với danh sách đối số, bạn sẽ phải chuyển nó qua một tệp. Một trong những cách dễ dàng hơn mà tôi có thể nghĩ đến là vượt qua nó thông qua đầu vào tiêu chuẩn. Từ trang man curl , bạn có thể sử dụng -d @-để đọc từ stdin thay vì dòng lệnh.

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

Bạn cũng có thể sử dụng phiên bản này tôi thích nó hơn:echo { "data": "$DATA" } | curl -X POST -H "Content-Type: application/json" -d @- "$HOST"
morhook
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.