Saya perlu membuat permintaan POST melalui Curl dari baris perintah. Data untuk permintaan ini terletak di file. Saya tahu bahwa melalui PUT ini dapat dilakukan dengan --upload-file
opsi.
curl host:port/post-file -H "Content-Type: text/xml" --data "contents_of_file"
Jawaban:
Anda mencari
--data-binary
argumen:Pada contoh di atas,
-i
cetak semua header sehingga Anda dapat melihat apa yang terjadi, dan-X POST
buat secara eksplisit bahwa ini adalah posting. Kedua hal ini dapat dihilangkan dengan aman tanpa mengubah perilaku pada kabel. Jalur ke file harus didahului oleh@
simbol, jadicurl
tahu membaca dari file.sumber
.xml
@
bagian sangat penting!-d
akan menyebabkancurl
strip baru, tetapi--data-binary
tidak akan.Yang perlu Anda lakukan adalah
--data
memulai argumen dengan@
:Misalnya, jika Anda memiliki data dalam file yang dipanggil
stuff.xml
maka Anda akan melakukan sesuatu seperti:The
stuff.xml
nama file bisa diganti dengan path relatif atau penuh ke file:@../xml/stuff.xml
,@/var/tmp/stuff.xml
, ...sumber
--data "name@stuff"
.Jika Anda menggunakan data formulir untuk mengunggah file, di mana nama parameter harus ditentukan, Anda bisa menggunakan:
curl -X POST -i -F "parametername=@filename" -F "additional_parm=param2" host:port/xxx
sumber
parametername=
benar-benar membantu saya :)Sebagian besar jawaban sempurna di sini, tetapi ketika saya mendarat di sini untuk masalah khusus saya, saya harus mengunggah file biner (lembar spread XLSX) menggunakan metode POST, saya melihat satu hal yang hilang , yaitu biasanya bukan hanya file yang Anda muat, Anda mungkin memiliki lebih banyak elemen data formulir , seperti komentar ke file atau tag ke file dll seperti kasus saya. Karenanya, saya ingin menambahkannya di sini karena ini adalah kasus penggunaan saya, sehingga dapat membantu orang lain.
sumber
Saya harus menggunakan koneksi HTTP, karena pada HTTPS ada batas ukuran file default.
https://techcommunity.microsoft.com/t5/IIS-Support-Blog/Solution-for-Request-Entity-Too-Large-error/ba-p/501134
sumber