使用 curl,如何在 POST 中传递多个命令行参数?

使用 curl,如何在 POST 中传递多个命令行参数?

我有以下控制器:

public IActionResult Post([FromQuery] int Width, [FromQuery] int Height, [FromForm] IFormFile Image)

使用 Insomnia / Postman,我可以执行 post 命令并在 url 中传递宽度 / 高度参数。

我尝试使用 CURL 执行相同操作,但看不到第二个参数。在这种情况下,高度将为 0

curl -F [email protected] test/thumbnail?width=320&height=240

在这种情况下,宽度将为 0

curl -F [email protected] test/thumbnail?height=240&width=320

我错过了什么?

答案1

最有可能的问题是,这&是你的 macOS 中的一个特殊字符(命令行解释器);如果不加引号,它将充当命令分隔符并在后台运行前面的命令。其余部分 ( height=240) 被解释为第二通过 macOS 命令。

因此,必须将带有的参数&引起来,或者&将带有的参数本身用反斜杠转义:

"test/thumbnail?height=240&width=320"
test/thumbnail?height=240\&width=320
test/thumbnail?height=240"&"width=320
test/thumbnail?'height=240&width=320'
etc.

?也是一个特殊之处,因为它是一个通配符,但只有当它恰好与本地系统上的真实文件名匹配时才会出现问题。)

评论建议-d并不正确。首先,它们以 POST 有效负载的形式发送参数 - 但控制器需要查询字符串 (GET) 参数,这完全不是一回事。其次,请求一次只能使用一种格式 - 您不能在同一个请求中混合使用-F-d

答案2

对于 Mac OS,正确的是

curl -F [email protected] test/thumbnail?width=320**\&**height=240

在 Mac 中,你必须逃脱&

相关内容