CURL POST --data-binary vs -form

У меня есть простой вопрос относительно использования cURL. Не нашел много информации на странице поиска Google или Man, чтобы получить четкий ответ.

В здесь говорится об использовании --data vs --form при отправке файла/вложения. Мне любопытно узнать, в чем основное отличие и при каких сценариях вы бы выбрали --data-binary VS --form?

Тело "POST" POST может быть отправлено через --data (for application/x-www-form-urlencoded) или --form (for multipart/form-data):

-F "foo=bar"                  # 'foo' value is 'bar'
-F "foo=<foovalue.txt"        # the specified file is sent as plain text input
-F "[email protected]"        # the specified file is sent as an attachment

-d "foo=bar"
-d "foo=<foovalue.txt"
-d "[email protected]"
-d "@entirebody.txt"          # the specified file is used as the POST body

--data-binary "@binarybody.jpg"

Ответы

Ответ 1

Разница объясняется в разделе HTML 4.01 Specification в Формах:

application/x-www-form-urlencoded - это тип содержимого по умолчанию.

Тип содержимого "application/x-www-form-urlencoded" неэффективен для отправки больших количеств двоичных данных или текста, содержащих символы, отличные от ASCII. Тип контента "multipart/form-data" должен использоваться для отправки форм, содержащих файлы, данные, отличные от ASCII, и двоичные данные.

Ответ 2

Это точно основное отличие, тип данных, отправляемых на сервер (application/x-www-form-urlencoded vs multipart/form-data)