ฉันต้องทำการร้องขอ POST ผ่าน Curl จากบรรทัดคำสั่ง ข้อมูลสำหรับคำขอนี้อยู่ในไฟล์ ฉันรู้ว่าผ่าน PUT สิ่งนี้สามารถทำได้ด้วย--upload-file
ตัวเลือก
curl host:port/post-file -H "Content-Type: text/xml" --data "contents_of_file"
ฉันต้องทำการร้องขอ POST ผ่าน Curl จากบรรทัดคำสั่ง ข้อมูลสำหรับคำขอนี้อยู่ในไฟล์ ฉันรู้ว่าผ่าน PUT สิ่งนี้สามารถทำได้ด้วย--upload-file
ตัวเลือก
curl host:port/post-file -H "Content-Type: text/xml" --data "contents_of_file"
คำตอบ:
คุณกำลังมองหา--data-binary
ข้อโต้แย้ง:
curl -i -X POST host:port/post-file \
-H "Content-Type: text/xml" \
--data-binary "@path/to/file"
ในตัวอย่างด้านบน-i
พิมพ์ส่วนหัวทั้งหมดเพื่อให้คุณเห็นสิ่งที่เกิดขึ้นและ-X POST
ทำให้ชัดเจนว่านี่เป็นบทความ ทั้งสองสิ่งนี้สามารถละเว้นได้อย่างปลอดภัยโดยไม่ต้องเปลี่ยนพฤติกรรมบนสาย เส้นทางไปยังไฟล์จะต้องมี@
สัญลักษณ์นำหน้าดังนั้นจึงcurl
ควรอ่านจากไฟล์
.xml
@
ส่วนหนึ่งเป็นสิ่งสำคัญมาก!
-d
จะทำให้curl
ตัดการขึ้นบรรทัดใหม่ แต่--data-binary
จะไม่
ฉันต้องทำการร้องขอ POST ผ่าน Curl จากบรรทัดคำสั่ง ข้อมูลสำหรับคำขอนี้อยู่ในไฟล์ ...
สิ่งที่คุณต้องทำคือให้--data
อาร์กิวเมนต์เริ่มต้นด้วย@
:
curl -H "Content-Type: text/xml" --data "@path_of_file" host:port/post-file-path
ตัวอย่างเช่นหากคุณมีข้อมูลในไฟล์ที่เรียกว่าstuff.xml
แล้วคุณจะทำสิ่งที่ชอบ:
curl -H "Content-Type: text/xml" --data "@stuff.xml" host:port/post-file-path
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 ฉันเห็นสิ่งหนึ่งที่ขาดหายไปนั่นคือโดยปกติแล้วไม่ใช่แค่ไฟล์ที่คุณโหลดเท่านั้น เพิ่มเติมองค์ประกอบข้อมูลรูปแบบ , เช่นความคิดเห็นที่ไฟล์หรือแท็กไปยังไฟล์อื่น ๆ เช่นกรณีของฉัน ดังนั้นฉันต้องการเพิ่มที่นี่เนื่องจากเป็นกรณีการใช้งานของฉันเพื่อให้สามารถช่วยเหลือผู้อื่นได้
curl -POST -F comment=mycomment -F file_type=XLSX -F file_data=@/your/path/to/file.XLSX http://yourhost.example.com/api/example_url
ฉันต้องใช้การเชื่อมต่อ HTTP เพราะใน HTTPS มีการ จำกัด ขนาดไฟล์เริ่มต้น
curl -i -X 'POST' -F 'file=@/home/testeincremental.xlsx' 'http://example.com/upload.aspx?user=example&password=example123&type=XLSX'