cUrl:参数列表过长


15

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

我正在使用这样的东西:

DATA=$( base64 "$FILE" )

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

还有其他方法可以在JSON主体中获取数据吗?

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


Answers:


19

如果base64编码的文件太大,无法容纳在参数列表中,则必须通过文件传递它。我能想到的更简单的方法之一是通过标准输入传递它。在curl手册页中,您可以使用-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
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.