php實(shí)現(xiàn)從ftp服務(wù)器上下載文件樹到本地電腦的程序
更新時(shí)間:2009年02月10日 21:52:35 作者:
功能:完成從ftp服務(wù)器端下載文件到本地電腦(整體復(fù)制即目錄樹是一樣的)
復(fù)制代碼 代碼如下:
/*
用ftp_nlist()函授時(shí),返回的數(shù)組值會(huì)有兩種類型:因服務(wù)器不同而異
a:?jiǎn)为?dú)的文件名
b:包含目錄的文件名。
如果挪用,請(qǐng)注意更改此處。
*/
<?php
function download_file($dir,$fc,$_FILE_)
{
$fn=ftp_nlist($fc,".");//列出該目錄的文件名(含子目錄),存儲(chǔ)在數(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])) //提取是文件和目錄,剔除.,..這兩個(gè)目錄
{
if(ereg('^[a-zA-Z0-9_]+([a-zA-Z0-9-]*.*)(\.+)',$fn[$i])) //是文件時(shí)直接下載
{
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)建一個(gè)
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ī)絕對(duì)地址";//例如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è)置超時(shí)時(shí)間
$dir="";chdir($_FILE_);//進(jìn)入本地機(jī)絕對(duì)地址目錄
download_file($dir,$fc,$_FILE_);
ftp_quit($fc);
//從服務(wù)器下載文件樹的程序
?>
希望能給大家?guī)椭?,謝謝
您可能感興趣的文章:
- PHP實(shí)現(xiàn)遠(yuǎn)程下載文件到本地
- php實(shí)現(xiàn)當(dāng)前頁(yè)面點(diǎn)擊下載文件的實(shí)例代碼
- php中強(qiáng)制下載文件的代碼(解決了IE下中文文件名亂碼問題)
- php下載文件源代碼(強(qiáng)制任意文件格式下載)
- php download.php實(shí)現(xiàn)代碼 跳轉(zhuǎn)到下載文件(response.redirect)
- PHP/ThinkPHP實(shí)現(xiàn)批量打包下載文件的方法示例
- PHP 下載文件時(shí)自動(dòng)添加bom頭的方法實(shí)例
- PHP 下載文件時(shí)如何自動(dòng)添加bom頭及解釋BOM頭和去掉bom頭的方法
- php實(shí)現(xiàn)SAE上使用storage上傳與下載文件的方法
- PHP實(shí)現(xiàn)從遠(yuǎn)程下載文件的方法
- php+js實(shí)現(xiàn)的無(wú)刷新下載文件功能示例
相關(guān)文章
PHP中define() 與 const定義常量的區(qū)別詳解
這篇文章主要介紹了PHP中define() 與 const定義常量的區(qū)別,結(jié)合實(shí)例形式分析了php中使用define()與const定義常量的具體使用原理、技巧與相關(guān)用法區(qū)別,需要的朋友可以參考下2019-06-06php通過數(shù)組實(shí)現(xiàn)多條件查詢實(shí)現(xiàn)方法(字符串分割)
這篇文章主要介紹了php通過數(shù)組實(shí)現(xiàn)多條件查詢實(shí)現(xiàn)方法(字符串分割),需要的朋友可以參考下2014-05-05PHP標(biāo)準(zhǔn)庫(kù)(PHP SPL)詳解
今天小編就為大家分享一篇關(guān)于PHP標(biāo)準(zhǔn)庫(kù)(PHP SPL)詳解,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧2019-03-03