Мне нужно сделать запрос POST через Curl из командной строки. Данные для этого запроса находятся в файле. Я знаю, что через PUT это можно сделать с помощью --upload-file
опции.
curl host:port/post-file -H "Content-Type: text/xml" --data "contents_of_file"
http
curl
http-post
command-line-interface
breedish
источник
источник
Ответы:
Вы ищете
--data-binary
аргумент:В приведенном выше примере
-i
распечатывает все заголовки, чтобы вы могли видеть, что происходит, и-X POST
ясно указывает, что это пост. Оба из них могут быть безопасно опущены без изменения поведения на проводе. Путь к файлу должен предшествовать@
символу, поэтомуcurl
знает, что читать из файла.источник
.xml
@
часть чрезвычайно важно!-d
приведетcurl
к лишению перевода строки, но--data-binary
не будет.Все, что вам нужно сделать, это
--data
начать аргумент с@
:Например, если у вас есть данные в файле с именем,
stuff.xml
вы бы сделали что-то вроде:stuff.xml
Имя файл может быть заменено с относительным или полным путем к файлу:@../xml/stuff.xml
,@/var/tmp/stuff.xml
, ...источник
--data "name@stuff"
.Если вы используете данные формы для загрузки файла, в котором необходимо указать имя параметра, вы можете использовать:
curl -X POST -i -F "parametername=@filename" -F "additional_parm=param2" host:port/xxx
источник
parametername=
действительно помог мне :)Большинство ответов здесь идеально, но когда я попал сюда для решения своей конкретной проблемы, мне нужно загрузить двоичный файл (электронная таблица XLSX), используя метод POST, я вижу одну вещь, отсутствующую , т.е. обычно это не просто файл, который вы загружаете, вы можете иметь больше элементов данных формы , таких как комментарий к файлу или теги к файлу и т. д., как было в моем случае. Поэтому я хотел бы добавить это здесь, так как это был мой вариант использования, чтобы он мог помочь другим.
источник
Мне пришлось использовать соединение HTTP, потому что на HTTPS есть ограничение размера файла по умолчанию.
https://techcommunity.microsoft.com/t5/IIS-Support-Blog/Solution-for-Request-Entity-Too-Large-error/ba-p/501134
источник