कैसे cURL का उपयोग करके निकाय निकाय के रूप में फ़ाइल सामग्री भेजें


207

मैं एक वेब सेवा के लिए HTTP POST भेजने के लिए cURL कमांड लाइन उपयोगिता का उपयोग कर रहा हूं। मैं POST की निकाय इकाई के रूप में एक फ़ाइल की सामग्री शामिल करना चाहता हूं। मैंने कोशिश की है -d </path/to/filename>कि अन्य वेरिएंट जैसे प्रकार की जानकारी के साथ --data </path/to/filename> --data-urlencode </path/to/filename>आदि का उपयोग किया जाए ... फ़ाइल हमेशा संलग्न है। मुझे निकाय इकाई के रूप में इसकी आवश्यकता है।

जवाबों:


338

मेरा मानना ​​है कि आप @filenameवाक्यविन्यास की तलाश कर रहे हैं , जैसे:

पट्टी नई लाइनों

curl --data "@/path/to/filename" http://...

नई लाइनें रखें

curl --data-binary "@/path/to/filename" http://...

=====

कर्ल फ़ाइल से सभी नए समाचारों को छीन लेगा। यदि आप फ़ाइल को newlines के साथ भेजना चाहते हैं, तो --data-binary--डेटा के स्थान पर उपयोग करें


21
यदि आप वास्तविक कल्पना करना चाहते हैं तो आप कर सकते हैं: cat file.txt | curl --data "@-" `(< url.txt )` @-कर्ल को स्टडिन से पढ़ने के लिए कहता है। तुम भी बस पुनर्निर्देशित (< x.txt )का उपयोग करने के लिए जो आप चाहते हैं में डाल सकता है। यदि आप बैश का उपयोग कर रहे हैं।
ब्रीडली

62
कर्ल फ़ाइल से सभी नए समाचारों को छीन लेगा। यदि आप फ़ाइल को newlines के साथ भेजना चाहते हैं, तो --data-binaryइसके स्थान पर उपयोग करें --data
क्रिस

अब इस अनुरोध को प्राधिकृत करने के लिए कोई लॉगिन क्रेडेंशियल कैसे जोड़ेगा?
अनोन

@ anon58192932 - यह सर्वर के सुरक्षा प्रोटोकॉल पर निर्भर करता है। यदि आप name:valueएक उपयोगकर्ता नाम और पासवर्ड की तरह जोड़े का उपयोग कर रहे हैं, तो आवश्यक हेडर जोड़ें जो सेवा की उम्मीद कर रहा है: --header: "<header_name>:<header_value>"एकल स्ट्रिंग के रूप में।
रॉय हिंकले

19

मुझे पता है कि इस सवाल का जवाब दिया गया है, लेकिन मेरे मामले में मैं एक पाठ फ़ाइल की सामग्री को स्लैक वेबहूक एपी में भेजने की कोशिश कर रहा था और किसी कारण से उपरोक्त उत्तर काम नहीं कर रहा था। कुछ भी, यह आखिरकार मेरे लिए क्या चाल है:

curl -X POST -H --silent --data-urlencode "payload={\"text\": \"$(cat file.txt | sed "s/\"/'/g")\"}" https://hooks.slack.com/services/XXX

यह एक बिंदुओं को अंडरस्कोर (-।> _) में परिवर्तित नहीं करता है और नए सिरे से रखता है। धन्यवाद!
रेमन फिनकेन

1
यह शांत है, लेकिन यह प्रश्न का उत्तर नहीं देता है क्योंकि फ़ाइल को कर्ल के लिए निर्दिष्ट किए जाने के बजाय कमांड लाइन पर विस्फोट किया गया है। मैं यह भी सोच रहा हूं कि क्या शैल के सभी विशेष पात्रों को बचाना होगा - लेकिन मुझे इस बारे में पर्याप्त जानकारी नहीं है;)
जेरार्ड ओनली

धन्यवाद, आपने मेरी जान बचाई!
आर्यविष्णु जी

एक बड़ी सामग्री फ़ाइल के लिए, ऊपर कर्ल काम नहीं करेगा, curl: argument list too longउस स्थिति में स्वीकृत उत्तर जीवन रक्षक हैcurl --data "@/path/to/filename" http://...
एक और कोडर
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.