2013-10-31 3 views
7

मैं वर्तमान में दो कक्षाओं को कोडिंग कर रहा हूं: HttpRequest और HttpResponse। मैं अपने स्वयं के HTTP वर्गों को कोड करना चाहता हूं।PHP http अनुरोध सामग्री कच्चे डेटा enctype = multipart/form-data

मुझे enctype = multipart/form-data के साथ एक फॉर्म का उपयोग करके POST विधि के साथ कोई समस्या आ रही है: मुझे अनुरोध सामग्री नहीं मिल सकती है।

एक लंबे शोध और खोज के बाद, मुझे पता चला है कि मुझे अनुरोध सामग्री प्राप्त करने के लिए file_get_contents("php://input") का उपयोग करना होगा। जब मैं इसका परीक्षण करता हूं, तो मेरे पास खाली स्ट्रिंग var_dump(file_get_contents("php://input")) है।

मुझे सर्वर/PHP कॉन्फ़िगरेशन तक कोई पहुंच नहीं है।

मैं निम्नलिखित कोड के साथ परीक्षण कर रहा हूँ:

<?php 
$input = file_get_contents('php://input'); 
var_dump($input); 
?> 
<html> 
<body> 
<form action="./" method="post" enctype="multipart/form-data"> 
    <label for="file">Filename:</label> 
    <input type="text" name="namen" id="nameid" /><br/> 
    <input type="file" name="file" id="file"><br> 
    <input type="file" name="file2" id="file2"><br> 
    <input type="submit" name="submit" value="Submit"> 
</form> 
</body> 
</html> 

और जमा करने के बाद, मैं इस परिणाम है: string(0) ""। यह स्पष्ट है क्योंकि php: // इनपुट enctype = "multipart/form-data" रूपों के साथ काम नहीं करता है।

-----------------------------19972703421793859182225487886 
Content-Disposition: form-data; name="namen" 

ds 
-----------------------------19972703421793859182225487886 
Content-Disposition: form-data; name="file"; filename="toto.xml" 
Content-Type: text/xml 

<?xml version="1.0" encoding="UTF-8"?> 
<Toto></Toto> 

-----------------------------19972703421793859182225487886 
Content-Disposition: form-data; name="file2"; filename="" 
Content-Type: application/octet-stream 


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

Submit 
-----------------------------19972703421793859182225487886-- 

एक तरह से यह किसी भी अनुरोध विधि के लिए काम करता है:

मैं की तरह कुछ करना चाहते हैं? या मैं गलत हूँ ?

उत्तर

6

मैं यहां स्पष्ट व्यक्ति के लिए जा रहा हूं: यहां तक ​​कि खुद को पार्स करने का प्रयास क्यों परेशान करते हैं? डेटा $ _POST []/$ _FILES [] के आसान उपयोग के साथ आपकी सीमा के भीतर है।

आप अभी भी अपनी कक्षाओं को उसी डेटा सरणी को पूरा करने की कोशिश करने के बजाय उन मानों के आस-पास अपनी कक्षा बना सकते हैं php-compiler पहले से ही आपके लिए किया था।

आपको एक वैध उत्तर देने के लिए: मुझे आपके php: // इनपुट वापस पाने का कोई तरीका नहीं पता, क्योंकि यह शायद PHP कंपाइलर द्वारा पढ़ा जाता है और इसलिए आप स्ट्रीम के अंत में हैं (प्लस: यह केवल पढ़ने के लिए है इसलिए संभवतः स्ट्रीम की शुरुआत में पॉइंटर को रीसेट करने का कोई तरीका नहीं है)।

+2

मैं बस कहना चाहता हूं: मैं बेवकूफ हूँ। धन्यवाद ;) – RaphyTheGeek

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