php實現從ftp伺服器上下載檔案樹到本地電腦的程式

來源:互聯網
上載者:User

複製代碼 代碼如下:/*
用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);//本地機器上該目錄不存在就建立一個
if(ftp_chdir($fc,$fn[$i]))
chdir($fn[$i]);
echo "當前的目錄是:".getcwd()."<br/>";// 更好的看清目前的目錄
download_file($fn[$i],$fc,$_FILE_);//遞迴進入該目錄下載檔案
}
}//提取檔案,目錄結束
}//for迴圈結束
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);
//從伺服器下載檔案樹的程式
?>

希望能給大家帶去協助,謝謝

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.