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实现密保卡功能实现代码&amp;lt;打包下载直接运行&amp;gt;
Oct 09 PHP
php数组函数序列之each() - 获取数组当前内部指针所指向元素的键名和键值,并将指针移到下一位
Oct 31 PHP
PHP句法规则详解 入门学习
Nov 09 PHP
解析MySql与Java的时间类型
Jun 22 PHP
php计算数组不为空元素个数的方法
Jan 27 PHP
ThinkPHP3.1的Widget新用法
Jun 19 PHP
Yii rules常用规则示例
Mar 15 PHP
Windows Server 2008 R2和2012中PHP连接MySQL过慢的解决方法
Jul 02 PHP
php操作mongodb封装类与用法实例
Sep 01 PHP
PHP的微信支付接口使用方法讲解
Mar 08 PHP
php 使用ActiveMQ发送消息,与处理消息操作示例
Feb 23 PHP
PHP7 其他语言层面的修改
Mar 09 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中die(),exit(),return的区别
2013/06/20 PHP
Yii实现多数据库主从读写分离的方法
2014/12/29 PHP
PHP伪造来源HTTP_REFERER的方法实例详解
2015/07/06 PHP
php socket通信(tcp/udp)实例分析
2016/02/14 PHP
PHP 数组遍历foreach语法结构及实例
2016/06/13 PHP
Laravel框架模型的创建及模型对数据操作示例
2019/05/07 PHP
javascript xml为数据源的下拉框控件
2009/07/07 Javascript
javascript动态改变img的src属性图片不显示的解决方法
2010/10/20 Javascript
JavaScript原型继承之基础机制分析
2011/08/26 Javascript
jQuery提交表单ajax查询实例代码
2012/10/07 Javascript
Js 时间函数getYear()的使用问题探讨
2013/04/01 Javascript
Javascript对象属性方法汇总
2013/11/21 Javascript
Extjs Label的 fieldLabel和html属性值对齐的方法
2014/06/15 Javascript
JavaScript实现SHA-1加密算法的方法
2015/03/11 Javascript
js完美实现@提到好友特效(兼容各大浏览器)
2015/03/16 Javascript
Bootstrap弹出框(modal)垂直居中的问题及解决方案详解
2016/06/12 Javascript
js实现弹窗居中的简单实例
2016/10/09 Javascript
jQuery实现立体式数字动态增加(animate方法)
2016/12/21 Javascript
详解JS对象封装的常用方式
2016/12/30 Javascript
JS对象创建的几种方式整理
2017/02/28 Javascript
AngularJS基于factory创建自定义服务的方法详解
2017/05/25 Javascript
cordova入门基础教程及使用中遇到的一些问题总结
2017/11/14 Javascript
vue下使用nginx刷新页面404的问题解决
2019/08/02 Javascript
[03:55]DOTA2完美大师赛选手传记——LFY.MONET
2017/11/18 DOTA
[01:00:17]DOTA2-DPC中国联赛 正赛 SAG vs Dynasty BO3 第二场 1月25日
2021/03/11 DOTA
使用python实现扫描端口示例
2014/03/29 Python
Window系统下Python如何安装OpenCV库
2020/03/05 Python
德国综合购物网站:OTTO
2018/11/13 全球购物
电子商务专业学生的学习自我评价
2013/10/27 职场文书
作弊检讨书1000字
2014/02/01 职场文书
关爱女孩行动实施方案
2014/03/13 职场文书
自我鉴定总结
2014/03/24 职场文书
技术比武方案
2014/05/19 职场文书
暖通工程师岗位职责
2014/06/12 职场文书
机械工程及其自动化专业求职信
2014/08/08 职场文书
2016春季幼儿园小班开学寄语
2015/12/03 职场文书