Отправить запрос POST с данными, указанными в файле через Curl

Мне нужно сделать запрос POST через Curl из командной строки. Данные для этого запроса находятся в файле. Я знаю, что через PUT это можно сделать с помощью опции --upload-file.

curl host:port/post-file -H "Content-Type: text/xml" --data "contents_of_file"

Ответ 1

Вы ищете аргумент --data-binary:

curl -i -X POST host:port/post-file -H "Content-Type: text/xml" --data-binary "@path/to/file"

В приведенном выше примере -i распечатывает все заголовки, чтобы вы могли видеть, что происходит, и -X POST делает его явным, что это сообщение. Оба они могут быть безопасно опущены без изменения поведения на проводе. Путь к файлу должен предшествовать символ @, поэтому curl знает, как читать из файла.

Ответ 2

Если вы используете данные формы для загрузки файла, в котором должно быть указано имя параметра, вы можете использовать:

curl -X POST -i -F [email protected] host:port/xxx

Ответ 3

Мне нужно сделать запрос POST через Curl из командной строки. Данные для этого запроса находятся в файле...

Другие ответы кажутся излишне сложными. Все, что вам нужно сделать, это привести аргумент --data с помощью @:

curl -H "Content-Type: text/xml" --data "@path_of_file" host:port/post-file 

Например, если у вас есть данные в файле с именем stuff.xml, вы должны сделать что-то вроде:

curl -H "Content-Type: text/xml" --data "@stuff.xml" host:port/post-file 

Имя файла stuff.xml можно заменить на относительный или полный путь к используемому файлу: @./xml/stuff.xml, @/var/tmp/stuff.xml,...