cUrl : 인수 목록이 너무 깁니다


15

오류가 발생합니다 : Argument list too longcUrl을 사용하여 JSON 본문 내 base64의 파일을 보내려고 할 때 오류가 발생 합니다.

나는 이와 같은 것을 사용하고있다 :

DATA=$( base64 "$FILE" )

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

내 JSON 본문에서 DATA를 가져 오는 다른 방법이 있습니까?

파일 시스템에서 파일을 읽고 base64로 변환 한 다음 본문으로 보내야한다는 점을 고려하십시오.


답변:


19

base64로 인코딩 된 파일이 너무 커서 인수 목록에 맞지 않으면 파일을 통해 전달해야합니다. 내가 생각할 수있는 가장 쉬운 방법 중 하나는 표준 입력을 통해 전달하는 것입니다. 로부터 컬 맨 페이지 , 당신이 사용할 수있는 -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
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.