2009-07-24 14 views
22

मैं कर्ल और php का उपयोग कर एक FTP सर्वर से फ़ाइल डाउनलोड करने के लिए कोशिश कर रहा हूँ, लेकिन मैं किसी भी प्रलेखन मदद करने के लिएकर्ल और php

$curl = curl_init(); 
curl_setopt($curl, CURLOPT_URL,"ftp://$_FTP[server]"); 
curl_setopt($curl, CURLOPT_FTPLISTONLY, 1); 
curl_setopt($curl, CURLOPT_USERPWD, "$_FTP[username]:$_FTP[password]"); 
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); 

$result = curl_exec ($curl); 

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

+1

आप इसे फाइल करने के लिए पूर्ण यूआरएल देने की कोशिश की और FTPLISTONLY विकल्प को हटाने है? – cOle2

+2

जिज्ञासा से, क्या इनमें से कोई भी उत्तर मदद करता है? –

+0

मैंने कर्ल का उपयोग कर ftp से डाउनलोड फ़ाइल के लिए एक कक्षा बनाई है। इसे देखें http://thien321091.github.io/Curl-FTP-with-php/ – HoangHieu

उत्तर

4
  • फ़ाइल के पूर्ण पथ पर CURLOPT_URL सेट करें।
  • CURLOPT_FTPLISTONLY लाइन को हटाएं।
  • curl_exec से पहले ये पंक्तियां जोड़ें:

    $file = fopen("filename_to_save_to", "w"); 
    curl_setopt($curl, CURLOPT_FILE, $file); 
    
20

मेरा अनुमान है कि आपके यूआरएल एक निर्देशिका, नहीं एक फ़ाइल की ओर इशारा कर रहा है। आपको फ़ाइल में पूर्ण URL CURLOPT_URL फ़ीड करने की आवश्यकता होगी। अगर आप एक फ़ाइल डाउनलोड करना चाहते हैं तो आप इसे कहीं से भी सहेजना चाहेंगे।

कार्य उदाहरण:

$curl = curl_init(); 
$file = fopen("ls-lR.gz", 'w'); 
curl_setopt($curl, CURLOPT_URL, "ftp://ftp.sunet.se/ls-lR.gz"); #input 
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($curl, CURLOPT_FILE, $file); #output 
curl_setopt($curl, CURLOPT_USERPWD, "$_FTP[username]:$_FTP[password]"); 
curl_exec($curl); 
curl_close($curl); 
fclose($file); 
1

देखें कर्ल यहाँ FTP के माध्यम से यह करने के लिए कनेक्ट करने के तरीके सहित मदद http://www.linuxformat.co.uk/wiki/index.php/PHP_-_The_Curl_library

नोट: फ़ाइल HTTP से पहुँचा जा सकता है तो यह सिर्फ लिंक का उपयोग करने के लिए बेहतर है ईजी: http://host.com/file.txt और फिर file_get_contents या फ़ाइल फ़ंक्शंस का उपयोग करें।

फिर आप http://uk.php.net/file_get_contents या अपने कंप्यूटर पर फ़ाइल डाउनलोड करने के किसी अन्य तरीके का उपयोग कर सकते हैं। यह विकल्प डाउनलोड के लिए एफ़टीपी का उपयोग करने से बेहतर होगा। आप हमेशा उपरोक्त लिंक में उल्लिखित अपलोड करने के लिए एफ़टीपी का उपयोग कर सकते हैं।

0

इन सभी उत्तरों का प्रयास करने के बाद और उनमें से कोई भी काम नहीं करने के बाद, मुझे अंततः काम करने के लिए मिला।

$curl = curl_init(); 
$fh = fopen("FILENAME.txt", 'w'); 
curl_setopt($curl, CURLOPT_URL, "ftp://{$serverInfo['username']}:{$servererInfo['password']}@{$serverInfo['server']}/{$serverInfo['file']}"); 
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); 
$result = curl_exec($curl); 
fwrite($fh, $result); 
fclose($fh); 
curl_close($curl); 
1
$ftp_location = put your ftp adress here; 
$location_login = put your login here; 
$location_pwd = put your password here; 
$conn_id = ftp_connect("$ftp_location"); 
$login_result = ftp_login($conn_id, $location_login, $location_pwd); 

if ((!$conn_id) || (!$login_result)) { 
    echo "FTP connection has failed!"; 
    exit; 
} else { 
    echo "Connected"; 
} 

// get the file 
// change products.csv to the file you want 
$local = fopen("products.csv","w"); 
$result = ftp_fget($conn_id, $local,"products.csv", FTP_BINARY); 
fwrite($local, $result); fclose($local); 

// check upload status 
if (!$result) { 
    echo "FTP download has failed!"; 
} else { 
    echo "Downloaded ";  
} 

// close the FTP stream 
ftp_close($conn_id); 
4

समुदाय प्रतिक्रिया मामूली समायोजन के साथ काम करता है:

ऐसा लगता है कि CURLOPT_FILE की स्थापना CURLOPT_RETURNTRANSFER सेट करने से पहले काम नहीं करता है, शायद क्योंकि CURLOPT_FILE CURLOPT_RETURNTRANSFER स्थापित किया जा रहा पर निर्भर करता है।

इस पृष्ठ पर joeterranova की टिप्पणी का हवाला देते हुए: http://php.net/manual/fr/function.curl-setopt.php