php實現從ftp服務器上下載文件樹到本地電腦的程序
更新時間:2009年02月10日 21:52:35 作者:
功能:完成從ftp服務器端下載文件到本地電腦(整體復制即目錄樹是一樣的)
復制代碼 代碼如下:
/*
用ftp_nlist()函授時,返回的數組值會有兩種類型:因服務器不同而異
a:單獨的文件名
b:包含目錄的文件名。
如果挪用,請注意更改此處。
*/
<?php
function download_file($dir,$fc,$_FILE_)
{
$fn=ftp_nlist($fc,".");//列出該目錄的文件名(含子目錄),存儲在數組中
$size=sizeof($fn);
$dir=($dir=="")?$dir:('/'.$dir);
$_FILE_=$_FILE_.$dir;
echo $_FILE_."<br/>";
for($i=0;$i<$size;$i++)
{
if(ereg('^[a-zA-Z0-9_]+',$fn[$i])) //提取是文件和目錄,剔除.,..這兩個目錄
{
if(ereg('^[a-zA-Z0-9_]+([a-zA-Z0-9-]*.*)(\.+)',$fn[$i])) //是文件時直接下載
{
if(ftp_get($fc,$fn[$i],$fn[$i],FTP_BINARY))
{
echo "<br/>下載".getcwd()."/".$fn[$i]."成功<br/>";
}
else
{
echo "<br/>下載".getcwd()."/".$fn[$i]."失敗<br/>";
}
}//文件下載結束
else //"是目錄,進入目錄,再讀取文件";
{
if(!file_exists($fn[$i]))
mkdir($fn[$i], 0700);//本地機器上該目錄不存在就創(chuàng)建一個
if(ftp_chdir($fc,$fn[$i]))
chdir($fn[$i]);
echo "當前的目錄是:".getcwd()."<br/>";// 更好的看清當前目錄
download_file($fn[$i],$fc,$_FILE_);//遞歸進入該目錄下載文件
}
}//提取文件,目錄結束
}//for循環(huán)結束
ftp_cdup($fc);//ftp服務器返回上層目錄
chdir(dirname($_FILE_));
}//download——file()函數結束
$_FILE_="本地機絕對地址";//例如c:/download,不要這樣c:/download/
$hostname="服務器名";
$loginname="用戶名";
$password="用戶密碼";
$fc=ftp_connect($hostname,"21") or die("Couldn't connect to $hostname");
$fc_rw=ftp_login($fc,$loginname,$password);
ftp_set_option($fc,FTP_TIMEOUT_SEC,100000);//設置超時時間
$dir="";chdir($_FILE_);//進入本地機絕對地址目錄
download_file($dir,$fc,$_FILE_);
ftp_quit($fc);
//從服務器下載文件樹的程序
?>
希望能給大家?guī)椭?,謝謝
相關文章
PHP中define() 與 const定義常量的區(qū)別詳解
這篇文章主要介紹了PHP中define() 與 const定義常量的區(qū)別,結合實例形式分析了php中使用define()與const定義常量的具體使用原理、技巧與相關用法區(qū)別,需要的朋友可以參考下2019-06-06

