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 相关文章推荐
第1次亲密接触PHP5(2)
Oct 09 PHP
PHP 字符截取 解决中文的截取问题,不用mb系列
Sep 29 PHP
PHP递归算法的详细示例分析
Feb 19 PHP
php对数组内元素进行随机调换的方法
May 12 PHP
php基本函数汇总
Jul 09 PHP
1亿条数据如何分表100张到Mysql数据库中(PHP)
Jul 29 PHP
php中二分法查找算法实例分析
Sep 22 PHP
PHP中快速生成随机密码的几种方式
Apr 17 PHP
thinkPHP框架中执行事务的方法示例
May 31 PHP
yii2 上传图片的示例代码
Nov 02 PHP
Laravel框架控制器,视图及模型操作图文详解
Dec 04 PHP
Thinkphp 框架扩展之应用模式实现方法分析
Apr 27 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扩展
2013/06/13 PHP
ThinkPHP框架设计及扩展详解
2014/11/25 PHP
PHP中的session安全吗?
2016/01/22 PHP
php设计模式之策略模式应用案例详解
2019/06/17 PHP
PHP高并发和大流量解决方案整理
2021/03/09 PHP
JS制作简单的三级联动
2015/03/18 Javascript
教你用javascript实现随机标签云效果_附代码
2016/03/16 Javascript
javascript事件委托的用法及其好处简析
2016/04/04 Javascript
AngularJS表单验证中级篇(3)
2016/09/28 Javascript
JavaScript实现无穷滚动加载数据
2017/05/06 Javascript
JQuery实现图片轮播效果
2017/05/08 jQuery
详解如何webpack使用DllPlugin
2018/09/30 Javascript
Vue.js上传图片到阿里云OSS存储的方法示例
2018/12/13 Javascript
微信小程序动态添加view组件的实例代码
2019/05/23 Javascript
layui table 获取分页 limit的方法
2019/09/20 Javascript
node.js express框架实现文件上传与下载功能实例详解
2019/10/15 Javascript
vue+iview框架实现左侧动态菜单功能的示例代码
2020/07/23 Javascript
Python3.x和Python2.x的区别介绍
2013/02/12 Python
Python Sql数据库增删改查操作简单封装
2016/04/18 Python
Python模块的制作方法实例分析
2019/12/21 Python
Python小白垃圾回收机制入门
2020/06/09 Python
使用Python将语音转换为文本的方法
2020/08/10 Python
Python SMTP发送电子邮件的示例
2020/09/23 Python
详解Python流程控制语句
2020/10/28 Python
css3新单位vw、vh的使用教程
2018/03/23 HTML / CSS
html5简单示例_动力节点Java学院整理
2017/07/07 HTML / CSS
详解Canvas实用库Fabric.js使用手册
2019/01/07 HTML / CSS
标记环介质访问控制协议
2016/03/27 面试题
毕业生的自我鉴定该怎么写
2013/12/02 职场文书
建筑工程专业学生的自我评价
2013/12/25 职场文书
村党支部书记承诺书
2014/05/29 职场文书
2014年国庆节演讲稿
2014/09/02 职场文书
公司租车协议书
2015/01/29 职场文书
2015年会计工作总结范文
2015/05/26 职场文书
【海涛dota解说】一房久违的影魔魂守二连发
2022/04/01 DOTA
Python按顺序遍历并读取文件夹中文件
2022/04/29 Python