2010-06-28 14 views
23

मैं किसी ब्राउज़र से किसी फ़ाइल को php स्क्रिप्ट में अपलोड करने के बारे में नहीं पूछ रहा हूं, इसके बारे में बहुत सारे ट्यूटोरियल हैं। मैं इसके बारे में पूछ रहा हूं:php के साथ फ़ाइल को किसी अन्य php सर्वर पर अपलोड करें

मेरे पास एक php स्क्रिप्ट है जिसने उपयोगकर्ता से एक फ़ाइल स्वीकार कर ली है, और फ़ाइल वर्तमान में सर्वर की हार्ड डिस्क पर है। मैं फ़ाइल को सर्वर 1 से एक php में अपलोड करना चाहता हूं नियमित एचटीपी पोस्ट प्रोटोकॉल का उपयोग करते हुए सर्वर 2 पर स्क्रिप्ट, इसलिए सर्वर 2 पर PHP स्क्रिप्ट को मानक फ़ाइल-अपलोड हैंडलर के रूप में लिखा जा सकता है।

मुझे इंटरनेट पर कोई ट्यूटोरियल नहीं मिल रहा है, क्योंकि वे सभी ब्राउज़र-> server1 के बारे में बात करते हैं। PHP के बारे में ट्यूटोरियल एफटीपी के बारे में सभी बातों को अपलोड करते हैं, लेकिन मैं उस प्रोटोकॉल का उपयोग नहीं करना चाहता हूं।

कृपया मदद करें?

उत्तर

30

आप इसके लिए कर्ल का उपयोग कर सकते हैं। ऐसा कुछ ऐसा करना चाहिए।

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_POST, true); 
curl_setopt($ch, CURLOPT_POSTFIELDS, array('file' => '@/path/to/file.txt')); 
curl_setopt($ch, CURLOPT_URL, 'http://server2/upload.php'); 
curl_exec($ch); 
curl_close($ch); 

फिर आप नियमित फ़ाइल अपलोड के रूप में server2 भाग को संभाल सकते हैं। उन विकल्पों पर अधिक जानकारी के लिए curl_setopt() देखें।

+0

धन्यवाद, यह तुरंत काम करता है :-) – Tominator

+1

मुझे बस एक और प्रोजेक्ट के लिए इसकी आवश्यकता है, और मैंने अपने नए कोड में एक त्रुटि की जो मुझे इतना सूक्ष्म था कि मुझे इसे यहां पोस्ट करना पड़ा: यह _very_ महत्वपूर्ण है कि CURLOPT_POST, true POSTFIELDS से पहले जब यह किसी सरणी पर सेट होता है! – Tominator

9

आप फ़ाइल को एक सर्वर से दूसरे सर्वर पर भेजने के लिए SOAP का उपयोग कर सकते हैं।

प्राप्त सर्वर:

<?php 
$server = new Soap_Server(null, array('uri'=>'somerui')); 
$server->addFunction('receiveFile'); 
function receiveFile($file) { 
    file_put_contents('somepath', base64_decode($file)); 
} 
?> 

भेजा जा रहा है सर्वर:

<?php 
$client = new Soap_Client(null, array('uri'=>'somerui')); 
$client->receiveFile(base64_encode(file_get_contents('somepath')); 
?> 
+0

हेहे, मौलिकता के लिए एक प्लस वन :-) – Tominator

+4

मैंने इस साल पहले लिखा था, मैं अभी भी बहुत नया था। अब मैं डरावनी चीज में चिल्लाता हूं कि मैंने यह सुझाव दिया। स्वीकृत उत्तर का प्रयोग करें। – bkulyk

+0

कोई चिंता नहीं, मैंने इसका उपयोग नहीं किया, लेकिन यह मूल था जैसा मैंने कहा :-) – Tominator

2

आप दो स्क्रिप्ट की जरूरत है।

पहली स्क्रिप्ट जो ब्राउज़र व्यवहार का अनुकरण करेगी, यह एक फाइल लेगी और इसे सेकंड स्क्रिप्ट पर भेज देगी, जो इसे नियमित फ़ाइल अपलोड स्क्रिप्ट की तरह ही संभालती है।

मेरा अनुमान है कि आपको पहली स्क्रिप्ट के लिए "http_post_fields" का उपयोग करना होगा, ऐसा लगता है कि यह फ़ाइलों को संभालता है। http://us2.php.net/manual/en/function.http-post-fields.php

शुभकामनाएं।

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