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 SQLite类
May 07 PHP
php iconv() : Detected an illegal character in input string
Dec 05 PHP
PHP表单提交表单名称含有点号(.)则会被转化为下划线(_)
Dec 14 PHP
PHP编程风格规范分享
Jan 15 PHP
CodeIgniter框架数据库事务处理的设计缺陷和解决方案
Jul 25 PHP
PHP中常用的输出函数总结
Sep 22 PHP
php+mysqli使用预处理技术进行数据库查询的方法
Jan 28 PHP
Opcache导致php-fpm崩溃nginx返回502
Mar 02 PHP
php实现cookie加密的方法
Mar 10 PHP
YII Framework框架教程之使用YIIC快速创建YII应用详解
Mar 15 PHP
php实现微信支付之企业付款
May 30 PHP
PHP使用pdo连接access数据库并循环显示数据操作示例
Jun 05 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逐行输出(ob_flush与flush的组合)
2012/02/04 PHP
解析posix与perl标准的正则表达式区别
2013/06/17 PHP
php中的字符编码转换函数用法示例
2014/10/20 PHP
ecshop后台编辑器替换成ueditor编辑器
2015/03/03 PHP
PHP计算指定日期所在周的开始和结束日期的方法
2015/03/24 PHP
javascript 命名空间以提高代码重用性
2008/11/13 Javascript
JS实现一键回顶功能示例代码
2013/10/28 Javascript
jquery div拖动效果示例代码
2013/12/08 Javascript
浅析Node在构建超媒体API中的作用
2014/07/30 Javascript
PHP中CURL的几个经典应用实例
2015/01/23 Javascript
jQuery操作基本控件方法实例分析
2015/12/31 Javascript
Node.js的Express框架使用上手指南
2016/03/12 Javascript
JQuery的attr 与 val区别
2016/06/12 Javascript
jQuery插件EasyUI设置datagrid的checkbox为禁用状态的方法
2016/08/05 Javascript
javascript事件的绑定基础实例讲解(34)
2017/02/14 Javascript
浅析vue component 组件使用
2017/03/06 Javascript
在Vue methods中调用filters里的过滤器实例
2018/08/30 Javascript
jQuery对底部导航进行跳转并高亮显示的实例代码
2019/04/23 jQuery
Typescript 中的 interface 和 type 到底有什么区别详解
2019/06/18 Javascript
Vue退出登录时清空缓存的实现
2019/11/12 Javascript
Python编写的com组件发生R6034错误的原因与解决办法
2013/04/01 Python
收藏整理的一些Python常用方法和技巧
2015/05/18 Python
Python的requests网络编程包使用教程
2016/07/11 Python
情人节快乐! python绘制漂亮玫瑰
2020/08/18 Python
Django-rest-framework中过滤器的定制实例
2020/04/01 Python
python 实现图片修复(可用于去水印)
2020/11/19 Python
css3弹性盒模型实例介绍
2013/05/27 HTML / CSS
GAP欧盟网上商店:GAP EU
2016/09/13 全球购物
特步官方商城:Xtep
2017/03/21 全球购物
优秀毕业生求职信范文
2014/01/02 职场文书
新学期主题班会
2015/08/17 职场文书
村官2015年度工作总结
2015/10/14 职场文书
《世界多美呀》教学反思
2016/02/22 职场文书
选择比努力更重要?这是长期以来对“努力”的最大误解
2019/07/12 职场文书
SQL Server数据定义——模式与基本表操作
2021/04/05 SQL Server
Spring Boot两种全局配置和两种注解的操作方法
2021/06/29 Java/Android