cUrl : 参数列表太长

Mat*_*teo 21 curl json

我收到错误:Argument list too long尝试使用 cUrl 在我的 JSON 正文中以 base64 格式发送文件时。

我正在使用这样的东西:

DATA=$( base64 "$FILE" )

curl -X POST -H "Content-Type: application/json" -d '{
   "data": "'"$DATA"'"
}' $HOST
Run Code Online (Sandbox Code Playgroud)

有没有其他方法可以在我的 JSON 正文中获取数据?

考虑到我需要读取文件系统中的文件,将其转换为 base64,然后将其发送到正文中。

jw0*_*013 26

如果 base64 编码的文件太大而无法放入参数列表中,您将不得不通过文件传递它。我能想到的一种更简单的方法是通过标准输入传递它。从curl 手册页,您可以使用-d @-从 stdin 而不是命令行读取。

curl -X POST -H "Content-Type: application/json" -d @- "$HOST" <<CURL_DATA
{ "data": "$DATA" }
CURL_DATA
Run Code Online (Sandbox Code Playgroud)

  • 你也可以使用这个我更喜欢的版本:`echo { "data": "$DATA" } | curl -X POST -H "Content-Type: application/json" -d @- "$HOST"` (3认同)