2011-09-26 7 views
8

का उपयोग कर पोस्ट के माध्यम से एक फ़ाइल भेजा जा रहा है स्क्रिप्ट।अगर मैं निम्नलिखित फार्म के साथ एक html पृष्ठ की स्थापना कच्चे HTTP (पोटीन)

परीक्षण उद्देश्यों के लिए, मुझे पुटी सत्र के माध्यम से कच्चे HTTP का उपयोग करने की आवश्यकता है।

मैं एक साधारण पोस्ट (केवल पाठ डेटा भेजने) इस तरह से कर सकते हैं:

POST /test_post.php HTTP/1.1 
Host: example.com 
User-Agent: Mozilla/5.0 
Connection: keep-alive 
Content-Type: application/x-www-form-urlencoded 
Content-Length: 11 

name=myname 

मैं एक फ़ाइल इस तरह से कैसे भेज सकते हैं?

उत्तर

14

आप multipart सामग्री प्रकार का उपयोग करें और टेलनेट में निम्नलिखित का प्रयास करें हेक्स/बाइनरी

में फ़ाइल डेटा सांकेतिक शब्दों में बदलना करने के लिए है:

POST /the_url HTTP/1.1 
User-Agent: Mozilla 
Host: www.example.com 
Content-Length: xxxx 
Content-Type: multipart/form-data; boundary=--------------------31063722920652 
------------------------------31063722920652 
Content-Disposition: form-data; name="a" 

value_for_a 
------------------------------31063722920652 
Content-Disposition: form-data; name="b" 

value_for_b 
------------------------------31063722920652 
Content-Disposition: form-data; name="c"; filename="myfile.txt" 
Content-Type: text/plain 

      This is a test 
      and more 

-----------------------------31063722920652 
Content-Disposition: form-data; name="submit" 

Submit 
-----------------------------31063722920652-- 

याद रखें कि एक अतिरिक्त न्यू लाइन क्षेत्र का नाम और के बीच आवश्यक है इसके डेटा। साथ ही, Content-Length मान अपडेट करें। netcat के साथ एक बंदरगाह

+0

मैं नई सामग्री लंबाई में फ़ाइल को कैसे समायोजित करूं? क्या यह बाइट्स में फ़ाइल का आकार होगा? – xbonez

+1

मैंने अपने उत्तर में कच्चा डेटा पूरा कर लिया है। इसमें अब एक टेक्स्ट फ़ाइल पेलोड है। सामग्री-लंबाई बाइट्स –

+0

में पेलोड (फ़ाइल समेत) का पूरा आकार होगा सामग्री-लंबाई डेटा के बाइट्स में आकार है जो पहले 'सीमा' से अंतिम बार तक शुरू की जाती है। –

4

ओपन और आने वाली अनुरोध को बचाने:

nc -l -p 1090 > income-http.txt 

फिर netcat को डेटा भेजने के अपने फार्म को संशोधित:

<form action="http://localhost:1090/upload_file.php" 
    method="post" enctype="multipart/form-data"> 

अपने ब्राउज़र से प्रपत्र को जमा करें। आप income-http.txt फ़ाइल में फ़ाइल की सामग्री के साथ पूर्ण कच्चा अनुरोध पा सकते हैं।

income-http.txt सहेजना एक बार की गतिविधि है। बाद में आप सहेजे गए अनुरोध को किसी भी समय भेज सकते हैं। कृपया ध्यान दें कि सहेजे गए txt में आपको Host: शीर्षलेख संपादित करना चाहिए।

+0

मुझे आने वाले अनुरोध का विश्लेषण करने में सक्षम होने का विचार पसंद है। लेकिन दुर्भाग्य से, एक बंदरगाह खोलना मेरे लिए एक विकल्प नहीं है। क्या इसका कोई विकल्प है? – xbonez

+1

आपको इसे केवल अपनी स्थानीय मशीन पर और केवल एक बार करना है। आय-http.txt प्राप्त करने के बाद आप इसे कभी भी भेज सकते हैं। – palacsint

+0

ओह, तुम्हारा मतलब है कि मैं स्थानीय मशीन पर बंदरगाह खोलता हूं और इसे राउटर पर अग्रेषित करने की ज़रूरत नहीं है? मेरे पास राउटर तक पहुंच नहीं है। मैं नेटकैट को एक शॉट दूंगा। – xbonez

संबंधित मुद्दे