PHP FTP 下載文件
FTP 是文件傳輸協議的縮寫,它是在互聯網上用于文件傳輸的標準協議。利用 PHP 的 FTP 擴展,可以很容易地實現 FTP 客戶端的功能。本文將介紹如何使用 PHP FTP 擴展下載文件。
連接 FTP 服務器
使用 PHP 的 FTP 擴展,需要安裝 PHP 的 FTP 服務擴展。連接到 FTP 服務器需要使用以下函數:
$ftp = ftp_connect("ftp.example.com");其中,"ftp.example.com" 是 FTP 服務器的主機名或者 IP 地址。如果連接成功,返回一個 FTP 連接資源句柄 $ftp。如果連接失敗,則返回 false。 在實際使用時,連接 FTP 服務器前,需要使用 ftp_login() 函數登錄:
$login_result = ftp_login($ftp, "USERNAME", "PASSWORD");其中 USERNAME 是 FTP 服務器用戶名,PASSWORD 是 FTP 服務器密碼。如果登錄成功,則 $login_result 返回 true。 下載文件 連接成功后,使用 ftp_get() 函數可以下載 FTP 服務器上的文件。使用 ftp_get() 函數的基本語法如下:
ftp_get($ftp, $local_file, $remote_file, FTP_BINARY);其中,$local_file 指定要保存到本地的文件路徑,$remote_file 指定要從 FTP 服務器下載的文件路徑,FTP_BINARY 是文件傳輸模式。 舉個例子,從 FTP 服務器下載文件 example.zip 并保存到本地的 /tmp 目錄下:
ftp_get($ftp, "/tmp/example.zip", "/path/to/example.zip", FTP_BINARY);下載目錄 使用 ftp_nlist() 函數可以獲取 FTP 服務器上某個目錄下的文件列表。然后需要遍歷目錄下的所有文件和子目錄,并使用 ftp_get() 逐個下載文件。 舉個例子,下載FTP服務器上的 /htdocs 目錄下的所有文件和目錄,并保存到本地的 /tmp/htdocs 目錄下:
$remote_files = ftp_nlist($ftp, "/htdocs"); $local_dir = "/tmp/htdocs"; foreach($remote_files as $remote_file) { $local_file = $local_dir . '/' . basename($remote_file); if(!ftp_get($ftp, $local_file, $remote_file, FTP_BINARY)) { echo "下載文件 $remote_file 失敗!下載進度條 使用 ftp_size() 函數獲取 FTP 服務器上某個文件的大小。下載文件時,可以通過 ftp_nb_get() 函數實現下載進度條。 以下代碼實現了一個簡單的 FTP 文件下載進度條:
"; } }
$remote_file_size = ftp_size($ftp, $remote_file); $local_file_size = 0; if (!$remote_file_size) { echo "獲取文件大小失敗!總結 本文介紹了如何使用 PHP 的 FTP 擴展下載文件,包括連接 FTP 服務器、下載文件、下載目錄和下載進度條。PHP FTP 擴展為我們提供了強大的文件傳輸功能,可以輕松實現各種 FTP 傳輸需求。趕快試試吧!
"; } else { $Handle = fopen($local_file, 'w'); $Conn = ftp_nb_get($ftp, $local_file, $remote_file, FTP_BINARY); while ($Conn == FTP_MOREDATA) { $local_file_size = filesize($local_file); $percent = $local_file_size / $remote_file_size * 100; echo "已下載 $percent %
"; $Conn = ftp_nb_continue($ftp); } fclose($Handle); }