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 相关文章推荐
关于js与php互相传值的介绍
Jun 25 PHP
php对数组排序代码分享
Feb 24 PHP
ThinkPHP验证码和分页实例教程
Aug 22 PHP
PHP之autoload运行机制实例分析
Aug 28 PHP
php中使用Ajax时出现Error(c00ce56e)的详细解决方案
Nov 03 PHP
利用PHP函数计算中英文字符串长度的方法
Nov 11 PHP
PHP中strtr字符串替换用法详解
Nov 26 PHP
codeigniter中view通过循环显示数组数据的方法
Mar 20 PHP
你应该知道PHP浮点数知识
May 13 PHP
详解WordPress开发中get_header()获取头部函数的用法
Jan 08 PHP
php文件上传后端处理小技巧
May 22 PHP
php微信开发之关注事件
Jun 14 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缓存技术的使用说明
2011/08/06 PHP
深入PHP curl参数的详解
2013/06/17 PHP
php实现二进制和文本相互转换的方法
2015/04/18 PHP
深入浅出php socket编程
2015/05/13 PHP
深入理解PHP JSON数组与对象
2016/07/19 PHP
phpQuery采集网页实现代码实例
2020/04/02 PHP
一个报数游戏js版(约瑟夫环问题)
2010/08/05 Javascript
当鼠标移动到图片上时跟随鼠标显示放大的图片效果
2013/06/06 Javascript
Ext中下拉列表ComboBox组件store数据格式用法介绍
2013/07/15 Javascript
js获取当前时间显示在页面上并每秒刷新
2014/12/24 Javascript
javascript实现检验的各种规则
2015/07/31 Javascript
js右下角弹出提示框示例代码
2016/01/12 Javascript
JavaScript数组方法总结分析
2016/05/06 Javascript
NodeJS连接MongoDB数据库时报错的快速解决方法
2016/05/13 NodeJs
使用jQuery给input标签设置默认值
2016/06/20 Javascript
javascript中对象的定义、使用以及对象和原型链操作小结
2016/12/14 Javascript
HTML页面定时跳转方法解析(2种任选)
2016/12/22 Javascript
原生js实现打字动画游戏
2017/02/04 Javascript
关于bootstrap日期转化,bootstrap-editable的简单使用,bootstrap-fileinput的使用详解
2017/05/12 Javascript
一个Js文件函数中调用另一个Js文件函数的方法演示
2017/08/14 Javascript
JavaScript作用域、闭包、对象与原型链概念及用法实例总结
2018/08/20 Javascript
详解Vue源码学习之双向绑定
2019/04/10 Javascript
js+html实现周岁年龄计算器
2019/06/25 Javascript
Node.js学习之内置模块fs用法示例
2020/01/22 Javascript
javascript运行机制之执行顺序理解
2020/08/03 Javascript
[01:09:10]NB vs Liquid Supermajor小组赛 A组胜者组决赛 BO3 第一场 6.2
2018/06/04 DOTA
python连接mongodb密码认证实例
2018/10/16 Python
解决pymysql cursor.fetchall() 获取不到数据的问题
2020/05/15 Python
Python3通过chmod修改目录或文件权限的方法示例
2020/06/08 Python
CSS3简单实现照片墙
2014/12/12 HTML / CSS
德国网上宠物店:Zoobio
2018/05/23 全球购物
Gloeilampgoedkoop荷兰:在线购买灯泡
2019/02/16 全球购物
在weblogic中发布ejb需涉及到哪些配置文件
2012/01/17 面试题
售后专员岗位职责
2013/12/08 职场文书
安卓程序员求职信
2014/02/28 职场文书
竞聘报告优秀范文
2014/11/06 职场文书