2011-10-17 132 views
2

我在php代碼中使用以下格式從ftp服務器下載文件。從PHP中的ftp服務器下載文件

file_put_contents(
      $filePath.$fileName, file_get_contents(
       ftp://username:[email protected]_name/folder_name/xyz#123.csv.zip 
      ) 
);  

我收到了550錯誤,因爲文件名包含'#'。如何避免錯誤。什麼是在FTP上執行不同操作的最佳PHP類?

+3

你確定你的550,因爲在文件名中的字符1000%? –

+1

未經授權,您通常會收到550錯誤。你有沒有檢查你的用戶名和密碼是否正確? – Marcus

+2

爲什麼不使用ftp函數和ftp_login? - http://www.php.net/manual/en/ref.ftp.php – Smamatti

回答

5

使用此

<?php 

// define some variables 
$local_file = 'filename.jpg'; 
$server_file = 'filename.jpg'; 
$ftp_server="www.abc.com"; 
$ftp_user_name="username"; 
$ftp_user_pass="password"; 

$conn_id = ftp_connect($ftp_server); 

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

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

?> 
+0

嗨..我試圖實現同樣的事情,但它不工作..幫助我! –

+0

我想實現的代碼,我得到這個錯誤:警告:ftp_get():無效的PORT命令。 – user2728024

+0

創建空白文件。大小爲零。 – Elyor

-1

嘗試:

$output = exec("wget -N ftp://[email protected]/path/to directory/file 2>&1 |grep 'filename w/o extension'|grep -v ftp|grep -v ="); 
print $output <to check if file downloaded or not> 
+1

特定於Linux。 –

+0

在shell執行中可以自行完成的一些不好的做法。此外,出於安全原因,大多數託管提供商都禁用了shell執行功能。 – Wranorn

1
true == (
$data = @ 
    file_get_contents('ftp://username:[email protected]_name/folder_name/xyz#123.csv') 
    ) 
     ? 
    file_put_contents('xyz#123.csv', $data) 
     : 
    exit; 
相關問題