Muszę wysłać żądanie POST przez Curl z wiersza poleceń. Dane dla tego żądania znajdują się w pliku. Wiem, że poprzez PUT można to zrobić z --upload-file
opcją.
curl host:port/post-file -H "Content-Type: text/xml" --data "contents_of_file"
http
curl
http-post
command-line-interface
rozmnażać się
źródło
źródło
Odpowiedzi:
Szukasz
--data-binary
argumentu:W powyższym przykładzie
-i
wypisuje wszystkie nagłówki, aby zobaczyć, co się dzieje, i-X POST
wyraźnie zaznacza, że jest to post. Oba można bezpiecznie pominąć bez zmiany zachowania na przewodzie. Ścieżka do pliku musi być poprzedzona@
symbolem, więccurl
umie czytać z pliku.źródło
.xml
@
część jest niezwykle ważna!-d
spowoduje usunięciecurl
nowych linii, ale--data-binary
nie zrobi tego.Wszystko, co musisz zrobić, to
--data
rozpocząć argument od@
:Na przykład, jeśli masz dane w nazwie pliku
stuff.xml
, zrobiłbyś coś takiego:stuff.xml
Nazwa pliku może być zastąpiony względną lub pełną ścieżkę dostępu do pliku:@../xml/stuff.xml
,@/var/tmp/stuff.xml
...źródło
--data "name@stuff"
.Jeśli używasz danych formularza do przesłania pliku, w którym należy podać nazwę parametru, możesz użyć:
curl -X POST -i -F "parametername=@filename" -F "additional_parm=param2" host:port/xxx
źródło
parametername=
naprawdę mi pomogło :)Większość odpowiedzi jest tutaj idealna, ale kiedy wylądowałem tutaj z powodu mojego konkretnego problemu, muszę przesłać plik binarny (arkusz kalkulacyjny XLSX) metodą POST, brakuje jednej rzeczy , tj. Zwykle nie jest to tylko plik, który ładujesz, możesz mieć więcej elementów danych formularza , takich jak komentarz do pliku lub znaczniki do pliku itp., jak to miało miejsce w moim przypadku. Dlatego chciałbym dodać go tutaj, ponieważ był to mój przypadek użycia, aby mógł pomóc innym.
źródło
Musiałem użyć połączenia HTTP, ponieważ na HTTPS istnieje domyślny limit rozmiaru pliku.
https://techcommunity.microsoft.com/t5/IIS-Support-Blog/Solution-for-Request-Entity-Too-Large-error/ba-p/501134
źródło