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

Tho*_*mas 3 curl

我有以下控制器:

public IActionResult Post([FromQuery] int Width, [FromQuery] int Height, [FromForm] IFormFile Image)
Run Code Online (Sandbox Code Playgroud)

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

我试图对 CURL 执行相同的操作,但没有看到第二个参数。在这种情况下,高度将为 0

curl -F image=@photo.jpg test/thumbnail?width=320&height=240
Run Code Online (Sandbox Code Playgroud)

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

curl -F image=@photo.jpg test/thumbnail?height=240&width=320
Run Code Online (Sandbox Code Playgroud)

我缺少什么?

use*_*686 6

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

\n\n

因此参数 with&必须被引号括起来,或者其&本身用反斜杠转义:

\n\n
"test/thumbnail?height=240&width=320"\ntest/thumbnail?height=240\\&width=320\ntest/thumbnail?height=240"&"width=320\ntest/thumbnail?\'height=240&width=320\'\netc.\n
Run Code Online (Sandbox Code Playgroud)\n\n

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

\n\n

建议的评论-d不正确。其一,它们以 POST 负载 \xe2\x80\x93 的形式发送参数,但控制器需要查询字符串 (GET) 参数,这根本不是一回事。另一方面,请求一次只能使用一种格式\xe2\x80\x93,您不能在同一请求中混合使用-F和。-d

\n