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 相关文章推荐
从网上搜到的phpwind 0day的代码
Dec 07 PHP
URL Rewrite的设置方法
Jan 02 PHP
PHP 第二节 数据类型之转换
Apr 28 PHP
php调整gif动画图片尺寸示例代码分享
Dec 05 PHP
PHP类继承 extends使用介绍
Jan 14 PHP
php中require和require_once的区别说明
Feb 27 PHP
在PHP中运行Linux命令并启动SSH服务的例子
Jun 12 PHP
PHP实现文件下载断点续传详解
Oct 15 PHP
PHP采用curl模仿用户登陆新浪微博发微博的方法
Nov 07 PHP
discuz目录文件资料汇总
Dec 30 PHP
php is_writable判断文件是否可写实例代码
Oct 13 PHP
使用PHPStorm+XDebug搭建单步调试环境
Nov 19 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
PHP多维数组排序array详解
2017/11/21 PHP
ASP中用Join和Array,可以加快字符连接速度的代码
2007/08/22 Javascript
js post方式传递提交的实现代码
2010/05/31 Javascript
JavaScript模板入门介绍
2012/09/26 Javascript
js的压缩及jquery压缩探讨(提高页面加载性能/保护劳动成果)
2013/01/29 Javascript
关于jquery css的使用介绍
2013/04/18 Javascript
Jquery取得iframe下内容的方法
2013/11/18 Javascript
如何从jQuery的ajax请求中删除X-Requested-With
2013/12/11 Javascript
javascript动态创建链接的方法
2015/05/13 Javascript
JavaScript人脸识别技术及脸部识别JavaScript类库Tracking.js
2015/09/14 Javascript
JavaScript6 let 新语法优势介绍
2016/07/15 Javascript
jQuery弹出遮罩层效果完整示例
2016/09/13 Javascript
AngularJS表单验证中级篇(3)
2016/09/28 Javascript
Angular2-primeNG文件上传模块FileUpload使用详解
2017/01/14 Javascript
Thinkjs3新手入门之如何使用静态资源目录
2017/12/06 Javascript
快速了解vue-cli 3.0 新特性
2018/02/28 Javascript
微信小程序异步API为Promise简化异步编程的操作方法
2018/08/14 Javascript
浅谈layui 表单元素的选中问题
2019/10/25 Javascript
uni-app实现获取验证码倒计时功能
2020/11/01 Javascript
[01:00:35]2018DOTA2亚洲邀请赛3月30日B组 EffcetVSMineski
2018/03/31 DOTA
[06:53]2018DOTA2国际邀请赛寻真——勇于创新的Vici Gaming
2018/08/14 DOTA
使用rpclib进行Python网络编程时的注释问题
2015/05/06 Python
python unittest实现api自动化测试
2018/04/04 Python
Python DataFrame设置/更改列表字段/元素类型的方法
2018/06/09 Python
利用django-suit模板添加自定义的菜单、页面及设置访问权限
2018/07/13 Python
Tensorflow 合并通道及加载子模型的方法
2018/07/26 Python
python获取服务器响应cookie的实例
2018/12/28 Python
python中dict使用方法详解
2019/07/17 Python
员工晚婚的请假条
2014/02/08 职场文书
对公司合理化的建议书
2014/03/12 职场文书
社会体育专业大学生职业生涯规划书
2014/09/17 职场文书
青春雷锋观后感
2015/06/10 职场文书
Windows下使用Nginx+Tomcat做负载均衡的完整步骤
2021/03/31 Servers
python文件名批量重命名脚本实例代码
2021/04/22 Python
详解非极大值抑制算法之Python实现
2021/06/28 Python
python计算列表元素与乘积详情
2022/08/05 Python