/* <BR>用ftp_nlist()函授时,返回的数组值会有两种类型:因服务器不同而异 <BR>a:单独的文件名 <BR>b:包含目录的文件名。 <BR>如果挪用,请注意更改此处。 <BR>*/ <BR><?php <BR>function download_file($dir,$fc,$_FILE_) <BR>{ <BR>$fn=ftp_nlist($fc,".");//列出该目录的文件名(含子目录),存储在数组中 <BR>$size=sizeof($fn); <BR>$dir=($dir=="")?$dir:('/'.$dir); <BR>$_FILE_=$_FILE_.$dir; <BR>echo $_FILE_."<br />"; <BR>for($i=0;$i<$size;$i++) <BR>{ <BR>if(ereg('^[a-zA-Z0-9_]+',$fn[$i])) //提取是文件和目录,剔除.,..这两个目录 <BR>{ <BR>if(ereg('^[a-zA-Z0-9_]+([a-zA-Z0-9-]*.*)(\.+)',$fn[$i])) //是文件时直接下载 <BR>{ <BR>if(ftp_get($fc,$fn[$i],$fn[$i],FTP_BINARY)) <BR>{ <BR>echo "<br />下载".getcwd()."/".$fn[$i]."成功<br />"; <BR>} <BR>else <BR>{ <BR>echo "<br />下载".getcwd()."/".$fn[$i]."失败<br />"; <BR>} <BR>}//文件下载结束 <BR>else //"是目录,进入目录,再读取文件"; <BR>{ <BR>if(!file_exists($fn[$i])) <BR>mkdir($fn[$i], 0700);//本地机器上该目录不存在就创建一个 <BR>if(ftp_chdir($fc,$fn[$i])) <BR>chdir($fn[$i]); <BR>echo "当前的目录是:".getcwd()."<br />";// 更好的看清当前目录 <BR>download_file($fn[$i],$fc,$_FILE_);//递归进入该目录下载文件 <BR>} <BR>}//提取文件,目录结束 <BR>}//for循环结束 <BR>ftp_cdup($fc);//ftp服务器返回上层目录 <BR>chdir(dirname($_FILE_)); <BR>}//download——file()函数结束 <BR>$_FILE_="本地机绝对地址";//例如c:/download,不要这样c:/download/ <BR>$hostname="服务器名"; <BR>$loginname="用户名"; <BR>$password="用户密码"; <BR>$fc=ftp_connect($hostname,"21") or die("Couldn't connect to $hostname"); <BR>$fc_rw=ftp_login($fc,$loginname,$password); <BR>ftp_set_option($fc,FTP_TIMEOUT_SEC,100000);//设置超时时间 <BR>$dir="";chdir($_FILE_);//进入本地机绝对地址目录 <BR>download_file($dir,$fc,$_FILE_); <BR>ftp_quit($fc); <BR>//从服务器下载文件树的程序 <BR>?> <mark>(本文来)源gaodaimacom搞#^代%!码&网(</mark><pre>搞gaodaima代码
希望能给大家带去帮助,谢谢