|
/*
用ftp_nlist()函授時,返回的數(shù)組值會有兩種類型:因服務(wù)器不同而異
a:單獨(dú)的文件名
b:包含目錄的文件名。
如果挪用,請注意更改此處。
*/
<?php
function download_file($dir,$fc,$_FILE_)
{
$fn=ftp_nlist($fc,".");//列出該目錄的文件名(含子目錄),存儲在數(shù)組中
$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/>";
}
}//文件下載結(jié)束
else //"是目錄,進(jìn)入目錄,再讀取文件";
{
if(!file_exists($fn[$i]))
mkdir($fn[$i], 0700);//本地機(jī)器上該目錄不存在就創(chuàng)建一個
if(ftp_chdir($fc,$fn[$i]))
chdir($fn[$i]);
echo "當(dāng)前的目錄是:".getcwd()."<br/>";// 更好的看清當(dāng)前目錄
download_file($fn[$i],$fc,$_FILE_);//遞歸進(jìn)入該目錄下載文件
}
}//提取文件,目錄結(jié)束
}//for循環(huán)結(jié)束
ftp_cdup($fc);//ftp服務(wù)器返回上層目錄
chdir(dirname($_FILE_));
}//download――file()函數(shù)結(jié)束
$_FILE_="本地機(jī)絕對地址";//例如c:/download,不要這樣c:/download/
$hostname="服務(wù)器名";
$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);//設(shè)置超時時間
$dir="";chdir($_FILE_);//進(jìn)入本地機(jī)絕對地址目錄
download_file($dir,$fc,$_FILE_);
ftp_quit($fc);
//從服務(wù)器下載文件樹的程序
?>
希望能給大家?guī)椭x謝
php技術(shù):php實(shí)現(xiàn)從ftp服務(wù)器上下載文件樹到本地電腦的程序,轉(zhuǎn)載需保留來源!
鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請第一時間聯(lián)系我們修改或刪除,多謝。