Отправить запрос 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
,...