php实现从ftp服务器上下载文件树到本地电脑的程序


Posted in PHP onFebruary 10, 2009
/* 
用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); 
//从服务器下载文件树的程序 
?>

希望能给大家带去帮助,谢谢
PHP 相关文章推荐
PHP与MySQL交互使用详解
Oct 09 PHP
用Flash图形化数据(二)
Oct 09 PHP
PHP第一季视频教程(李炎恢+php100 不断更新)
May 29 PHP
百度站点地图(百度sitemap)生成方法分享
Jan 09 PHP
浅析PHP的静态成员函数效率更高的原因
Jun 13 PHP
PHP获取mysql数据表的字段名称和详细信息的方法
Sep 27 PHP
Thinkphp将二维数组变为标签适用的一维数组方法总结
Oct 30 PHP
支持png透明图片的php生成缩略图类分享
Feb 08 PHP
php生成图片缩略图的方法
Apr 07 PHP
PHP入门教程之上传文件实例详解
Sep 11 PHP
浅谈PHP的反射机制
Dec 15 PHP
PhpStorm的使用教程(本地运行PHP+远程开发+快捷键)
Mar 26 PHP
PHP6 mysql连接方式说明
Feb 09 #PHP
PHP 数据库树的遍历方法
Feb 06 #PHP
一周让你学会PHP 不错的学习资料
Feb 06 #PHP
简化php模板页面中分页代码的解析
Feb 06 #PHP
精通php的十大要点(上)
Feb 04 #PHP
用mysql内存表来代替php session的类
Feb 01 #PHP
PHP 加密/解密函数 dencrypt(动态密文,带压缩功能,支持中文)
Jan 30 #PHP
You might like
dedecms模版制作使用方法
2007/04/03 PHP
PHP写UltraEdit插件脚本实现方法
2011/12/26 PHP
PHP列出MySQL中所有数据库的方法
2015/03/12 PHP
经典的解除许多网站无法复制文字的绝招
2006/12/31 Javascript
javascript 面向对象编程 function也是类
2009/09/17 Javascript
Javascript自定义函数判断网站访问类型是PC还是移动终端
2014/01/10 Javascript
JavaScript事件委托用法分析
2015/01/24 Javascript
微信小程序之picker日期和时间选择器
2017/02/09 Javascript
js判断PC端与移动端跳转
2020/12/24 Javascript
JavaScript+HTML5实现的日期比较功能示例
2017/07/12 Javascript
for循环 + setTimeout 结合一些示例(前端面试题)
2017/08/30 Javascript
vue中关闭eslint的方法分析
2018/08/04 Javascript
基于vue 实现表单中password输入的显示与隐藏功能
2019/07/19 Javascript
微信小程序实现手势滑动效果
2019/08/26 Javascript
python snownlp情感分析简易demo(分享)
2017/06/04 Python
Windows 7下Python Web环境搭建图文教程
2018/03/20 Python
解决Python的str强转int时遇到的问题
2018/04/09 Python
pygame游戏之旅 添加游戏界面按键图形
2018/11/20 Python
对dataframe数据之间求补集的实例详解
2019/01/30 Python
python GUI库图形界面开发之PyQt5窗口布局控件QStackedWidget详细使用方法
2020/02/27 Python
JACK & JONES英国官方网站:欧洲领先的男装生产商
2017/09/27 全球购物
Vans奥地利官方网站:美国原创极限运动潮牌
2018/09/30 全球购物
加热夹克:RAVEAN
2018/10/19 全球购物
JAVA中的关键字有什么特点
2014/03/07 面试题
售后服务科岗位职责范文
2013/11/13 职场文书
党员大会主持词
2014/04/02 职场文书
活动总结报告格式
2014/05/09 职场文书
2014年党课学习材料
2014/05/11 职场文书
中文专业自荐书
2014/06/29 职场文书
2014年采购部工作总结
2014/11/20 职场文书
北大自主招生自荐信
2015/03/04 职场文书
2015年学生会主席工作总结
2015/04/21 职场文书
道歉的话怎么说
2015/05/12 职场文书
2015年宣传部个人工作总结
2015/05/14 职场文书
八月迷情观后感
2015/06/11 职场文书
初中毕业生感言
2015/07/31 职场文书