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"
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"
Odpowiedzi:
Szukasz --data-binary
argumentu:
curl -i -X POST host:port/post-file \
-H "Content-Type: text/xml" \
--data-binary "@path/to/file"
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ęc curl
umie czytać z pliku.
.xml
@
część jest niezwykle ważna!
-d
spowoduje usunięcie curl
nowych linii, ale --data-binary
nie zrobi tego.
Muszę wysłać żądanie POST przez Curl z wiersza poleceń. Dane do tego żądania znajdują się w pliku ...
Wszystko, co musisz zrobić, to --data
rozpocząć argument od @
:
curl -H "Content-Type: text/xml" --data "@path_of_file" host:port/post-file-path
Na przykład, jeśli masz dane w nazwie pliku stuff.xml
, zrobiłbyś coś takiego:
curl -H "Content-Type: text/xml" --data "@stuff.xml" host:port/post-file-path
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
...
--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
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.
curl -POST -F comment=mycomment -F file_type=XLSX -F file_data=@/your/path/to/file.XLSX http://yourhost.example.com/api/example_url
Musiałem użyć połączenia HTTP, ponieważ na HTTPS istnieje domyślny limit rozmiaru pliku.
curl -i -X 'POST' -F 'file=@/home/testeincremental.xlsx' 'http://example.com/upload.aspx?user=example&password=example123&type=XLSX'