CURL के साथ फ़ाइल की सामग्री पोस्ट करना


15

(निम्नलिखित बैकस्टोरी है, आप "प्रश्न:" पर कूद सकते हैं यदि आप चाहें)

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

मुझे "x.py" नाम का एक सैंपल पाइथन फाइल मिला है और मैं इसे सर्वर पर पोस्ट करना चाहता हूं जैसे कि मैंने उस फॉर्म को भरा था। मैंने कोशिश की:

curl --data-urlencode "file=@x.py" http://matt.might.net/apps/pylex/pylex.php

लेकिन दुर्भाग्य से, यह सही काम नहीं कर रहा है क्योंकि जाहिरा तौर पर "@x.py"मेरी फ़ाइल सामग्री के रूप में पोस्ट हो रही है (यानी, "file=@x.py"यही पोस्ट हो रही है, नहीं "file=<contents-of-x.py>")। मैंने कोशिश की है --formऔर --dataउन लोगों ने भी काम नहीं किया है।

प्रश्न: विशेष रूप से, अगर मेरे पास गैर-यूआरएल-एन्कोडेड सामग्री के साथ एक फ़ाइल है, और इस फ़ाइल की सामग्री को POST का हिस्सा होना चाहिए और किसी विशेष नाम (इस मामले में file) के साथ जुड़ा होना चाहिए , तो इसे पूरा करने का सही तरीका क्या है ?



उत्तर के रूप में क्यों नहीं पोस्ट करें? आप अपने स्वयं के प्रश्न का उत्तर दे सकते हैं, और फिर ~ 2 दिनों में या कुछ और (निश्चित नहीं है कि आप इसे कब तक स्वीकार कर सकते हैं)।
बेंजीवेब

@BenjiWiebe: ठीक है, मैं इसे पोस्ट करूँगा।
कॉर्न्स्टलक्स

जवाबों:


25

आप जो चाहते हैं, वह है "file@x.py"(नहीं =)।

से curl मैनपेज :

name @ filename यह दिए गए फ़ाइल से कर्ल लोड डेटा (किसी भी newlines सहित), उस डेटा को URL-एनकोड करेगा और POST में इसे पास करेगा। नाम भाग को एक समान संकेत मिला है, जिसके परिणामस्वरूप नाम = urlencoded-file-content है। ध्यान दें कि नाम पहले से ही URL-एन्कोडेड होने की उम्मीद है।


2

मैं क्यूमेगा के उत्तर को स्वीकार किए गए के रूप में छोड़ दूंगा, लेकिन मैं एक उत्तर छोड़ दूंगा जो मैंने यहां टिप्पणी में छोड़ दिया था, जो कि आसान पढ़ने के लिए है। ऐसा करने का एक अन्य तरीका केवल निर्दिष्ट करके है "file=`cat x.py`"। पूर्ण आदेश के लिए, यह होगा:

curl --data-urlencode "file=`cat x.py`" http://matt.might.net/apps/pylex/pylex.php
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.