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-fileopcją.
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-fileopcją.
curl host:port/post-file -H "Content-Type: text/xml" --data "contents_of_file"
Odpowiedzi:
Szukasz --data-binaryargumentu:
curl -i -X POST host:port/post-file \
-H "Content-Type: text/xml" \
--data-binary "@path/to/file"
W powyższym przykładzie -iwypisuje wszystkie nagłówki, aby zobaczyć, co się dzieje, i -X POSTwyraź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 curlumie czytać z pliku.
.xml
@część jest niezwykle ważna!
-dspowoduje usunięcie curlnowych linii, ale --data-binarynie 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 --datarozpocząć 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.xmlNazwa 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'