簡體   English   中英

使用PHP的Curl從FTP下載文件

[英]Download a file from an FTP using Curl with PHP

我正在嘗試使用Curl從FTP服務器下載文件。 我可以將URL粘貼到瀏覽器中,然后下載就可以了。 問題是使用Curl和PHP,我相信FTP服務器正在執行重定向,而Curl將不會跟隨。 我收到錯誤消息,“服務器拒絕您更改到給定目錄”。

編輯:我在代碼中有%2f並將其刪除。 那是來自先前的測試。

我的代碼是:

$curl = curl_init();
$file = fopen("temp.zip", 'w');
curl_setopt($curl, CURLOPT_URL, "ftp://idx.living.net/idx_fl_ftp_down/idx_naples_dn/naples_data.zip");
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_FILE, $file);
curl_setopt($curl, CURLOPT_FTPSSLAUTH, CURLFTPAUTH_SSL);
curl_setopt($curl, CURLOPT_USERPWD, "myusername:mypassword");
curl_exec($curl);
echo curl_error($curl);

有什么方法可以強制Curl像下載文件時的瀏覽器一樣運行?

我知道這不能以應有的方式(使用curl)回答您的問題。 但是,這里有一個非curl代碼,可以使用php將文件下載到ftp服務器上。

$local_file = 'output.rar';
$server_file = '/somedir/1/bar/foo/somearchive.rar';
$ftp_user_name='some_login';
$ftp_user_pass='Password';
$ftp_server='HOST';
// set up basic connection
$conn_id = ftp_ssl_connect($ftp_server);

// login with username and password
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);

/* uncomment if you need to change directories
if (ftp_chdir($conn_id, "<directory>")) {
    echo "Current directory is now: " . ftp_pwd($conn_id) . "\n";
} else { 
    echo "Couldn't change directory\n";
}
*/

// try to download $server_file and save to $local_file
if (ftp_get($conn_id, $local_file, $server_file, FTP_BINARY)) {
    echo "Successfully written to $local_file\n";
} else {
    echo "There was a problem\n";
}

// close the connection
ftp_close($conn_id); 

筆記:

  1. ftp_ssl_connect()不適用於sFTP。 要將sFTP與PHP一起使用,請參見ssh2_sftp()。
  2. FTP服務器地址參數不應包含任何斜杠,並且不應以ftp://作為前綴。

暫無
暫無

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

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