У меня есть следующий контроллер:

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

С помощью Insomnia / Postman я могу выполнить команду post и передать параметры ширины / высоты в URL.

Я пытаюсь сделать то же самое с CURL, но второй параметр не виден. В этом случае высота будет 0

curl -F image=@photo.jpg test/thumbnail?width=320&height=240

В этом случае ширина будет 0

curl -F image=@photo.jpg test/thumbnail?height=240&width=320

Что мне не хватает?

1 ответ1

0

Наиболее вероятная проблема заключается в том, что & - это специальный символ в вашей оболочке 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 в одном запросе.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .