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
Dec 23 PHP
MYSQL 小技巧 -- LAST_INSERT_ID
Nov 24 PHP
删除无限分类并同时删除它下面的所有子分类的方法
Aug 08 PHP
PHP笔记之:基于面向对象设计的详解
May 14 PHP
PHP资源管理框架Assetic简介
Jun 12 PHP
PHP读取CURL模拟登录时生成Cookie文件的方法
Nov 04 PHP
在PHP程序中使用Rust扩展的方法
Jul 03 PHP
详谈phpAdmin修改密码后拒绝访问的问题
Apr 03 PHP
laravel自定义分页效果
Jul 23 PHP
PHP面向对象程序设计继承用法简单示例
Dec 28 PHP
PHP实现的敏感词过滤方法示例
Mar 06 PHP
mysqli扩展无法在PHP7下升级问题的解决
Sep 10 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
基于header的一些常用指令详解
2013/06/06 PHP
php使用filter过滤器验证邮箱 ipv6地址 url验证
2013/12/25 PHP
WordPress中用于获取文章信息以及分类链接的函数用法
2015/12/18 PHP
PHP性能分析工具xhprof的安装使用与注意事项
2017/12/19 PHP
xml 与javascript结合的问题解决方法
2007/03/24 Javascript
在vs2010中调试javascript代码方法
2011/02/11 Javascript
jquery获取下拉列表的值为null的解决方法
2011/03/18 Javascript
JS上传前预览图片实例
2013/03/25 Javascript
判断是否安装flash player及当前版本的JS代码
2013/08/08 Javascript
在ASP.NET中使用JavaScript脚本的方法
2013/11/12 Javascript
悬浮数字的实现案例
2014/02/19 Javascript
jquery实现简单的无缝滚动
2015/04/15 Javascript
AngularJS中的缓存使用
2017/01/11 Javascript
js技巧之十几行的代码实现vue.watch代码
2018/06/09 Javascript
基于vue-router 多级路由redirect 重定向的问题
2018/09/03 Javascript
微信小程序的mpvue框架快速上手指南
2019/05/15 Javascript
vue实现页面滚动到底部刷新
2019/08/16 Javascript
[04:27]2014DOTA2国际邀请赛 NAVI战队官方纪录片
2014/07/21 DOTA
python+selenium+autoit实现文件上传功能
2017/08/23 Python
OpenCV 边缘检测
2019/07/10 Python
给Django Admin添加验证码和多次登录尝试限制的实现
2020/07/26 Python
Python变量及数据类型用法原理汇总
2020/08/06 Python
django前端页面下拉选择框默认值设置方式
2020/08/09 Python
pycharm专业版远程登录服务器的详细教程
2020/09/15 Python
基于python实现百度语音识别和图灵对话
2020/11/02 Python
英国赛车、汽车改装和摩托车零件购物网站:Demon Tweeks
2018/10/29 全球购物
耐克奥地利官网:Nike奥地利
2019/08/16 全球购物
电子信息专业学生自荐信
2013/11/09 职场文书
法制宣传月活动方案
2014/05/11 职场文书
志愿者宣传口号
2014/06/17 职场文书
2015年校务公开工作总结
2015/05/26 职场文书
请客吃饭开场白
2015/06/01 职场文书
安全教育主题班会总结
2015/08/14 职场文书
2016年暑期见闻作文
2015/11/25 职场文书
什么是检讨书?检讨书的格式及范文
2019/11/05 职场文书
Pytorch 如何加速Dataloader提升数据读取速度
2021/05/28 Python