2009-07-24 68 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); 

我可以得到一個列表從FTP文件的文件,但多數民衆贊成在它

+1

你試圖給它的完整URL,文件和去除FTPLISTONLY選項? – cOle2 2009-07-24 15:37:11

回答

4
  • 設置CURLOPT_URL文件的完整路徑。
  • 刪除CURLOPT_FTPLISTONLY行。
  • curl_exec之前添加這些行:

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

我的猜測是,您的網址是朝着一個目錄,而不是文件指向。您需要將CURLOPT_URL提供給文件的完整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訪問那麼最好是隻使用鏈接EG:http://host.com/file.txt然後使用file_get_contents或文件功能。

然後,您可以使用http://uk.php.net/file_get_contents或任何其他方式將文件下載到您的計算機。這個選項比使用FTP下載更好。您可以隨時使用FTP上傳,如上面鏈接中所述。

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_RETURNTRANSFER 前設置CURLOPT_FILE 因爲 CURLOPT_FILE取決於 CURLOPT_RETURNTRANSFER被設置不起作用,大概。

引用此頁面上joeterranova的評論:http://php.net/manual/fr/function.curl-setopt.php