我有以下控制器:
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
。