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 相关文章推荐
用IE远程创建Mysql数据库的简易程序
Oct 09 PHP
php初学者写及时补给skype用户充话费的小程序
Nov 02 PHP
一张表搞清楚php is_null、empty、isset的区别
Jul 07 PHP
PHP查看当前变量类型的方法
Jul 31 PHP
PHP json_encode() 函数详解及中文乱码问题
Nov 05 PHP
php同时使用session和cookie来保存用户登录信息的实现代码
May 13 PHP
phpmailer简单发送邮件的方法(附phpmailer源码下载)
Jun 13 PHP
php封装的smartyBC类完整实例
Oct 19 PHP
PHP两种实现无级递归分类的方法
Mar 02 PHP
thinkphp5框架API token身份验证功能示例
May 21 PHP
PHP 8新特性简介
Aug 18 PHP
如何重写Laravel异常处理类详解
Dec 20 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
一个图形显示IP的PHP程序代码
2007/10/19 PHP
PHP 创建标签云函数代码
2010/05/26 PHP
在PHP中运行Linux命令并启动SSH服务的例子
2014/06/12 PHP
php编写的一个E-mail验证类
2015/03/25 PHP
PHP implode()函数用法讲解
2019/03/08 PHP
Extjs 继承Ext.data.Store不起作用原因分析及解决
2013/04/15 Javascript
JS HTML5 音乐天气播放器(Ajax获取天气信息)
2013/05/26 Javascript
使用jQuery将多条数据插入模态框的实现代码
2014/10/08 Javascript
JavaScript设计模式之抽象工厂模式介绍
2014/12/28 Javascript
AngularJS表单编辑提交功能实例
2015/02/13 Javascript
实例详解ECMAScript5中新增的Array方法
2016/04/05 Javascript
BootStrap 实现各种样式的进度条效果
2016/12/07 Javascript
bootstrap datetimepicker 日期插件在火狐下出现一条报错信息的原因分析及解决办法
2017/03/08 Javascript
Bootstrap + AngularJS 实现简单的数据过滤字符查找功能
2017/07/27 Javascript
vue.js根据代码运行环境选择baseurl的方法
2018/02/28 Javascript
关于单文件组件.vue的使用
2018/09/20 Javascript
Echarts实现多条折线可拖拽效果
2019/12/19 Javascript
Python读写Excel文件方法介绍
2014/11/22 Python
Python中用memcached来减少数据库查询次数的教程
2015/04/07 Python
Python操作mysql数据库实现增删查改功能的方法
2018/01/15 Python
Python中sort和sorted函数代码解析
2018/01/25 Python
Python实现常见的回文字符串算法
2018/11/14 Python
python 获取url中的参数列表实例
2018/12/18 Python
Python设计模式之解释器模式原理与用法实例分析
2019/01/10 Python
使用Python制作简单的小程序IP查看器功能
2019/04/16 Python
使用K.function()调试keras操作
2020/06/17 Python
python 将列表里的字典元素合并为一个字典实例
2020/09/01 Python
Backcountry旗下的户外商品闪购网站:steep&cheap
2016/09/22 全球购物
大学生最常用的自我评价
2013/12/07 职场文书
物流司机岗位职责
2013/12/28 职场文书
函授大学生自我鉴定
2014/02/05 职场文书
学习礼仪心得体会
2014/09/01 职场文书
优秀校长事迹材料
2014/12/24 职场文书
放弃继承权公证书
2015/01/23 职场文书
pytorch 梯度NAN异常值的解决方案
2021/06/05 Python
星际争霸:毕姥爷vs解冻01
2022/04/01 星际争霸