簡體   English   中英

使用curl和php從ftp下載文件

[英]download a file from ftp using curl and php

我正在嘗試使用curl和php從ftp服務器下載文件,但我找不到任何文檔可以幫助

$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);

我可以得到一個文件列表,但就此而言

我的猜測是你的URL指向一個目錄,而不是一個文件。 您需要將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);
  • 將CURLOPT_URL設置為文件的完整路徑。
  • 刪除CURLOPT_FTPLISTONLY行。
  • 在curl_exec之前添加這些行:

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

社區響應有微小的調整:

看來在設置CURLOPT_RETURNTRANSFER之前設置CURLOPT_FILE不起作用,可能是因為CURLOPT_FILE依賴於設置的CURLOPT_RETURNTRANSFER。

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

請參閱CURL幫助,包括如何通過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上傳鏈接,如上面的鏈接所示。

在嘗試了所有這些答案並且沒有一個工作之后,這就是我最終的工作。

$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);
$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);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM