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 无极分类(递归)实现代码
Jan 05 PHP
php foreach 使用&amp;(与运算符)引用赋值要注意的问题
Feb 16 PHP
PHP 线程安全与非线程安全版本的区别深入解析
Aug 06 PHP
PHP字符串的连接的简单实例
Dec 30 PHP
windows下PHP_intl.dll正确配置方法(apache2.2+php5.3.5)
Jan 14 PHP
destoon网站转移服务器后搜索汉字出现乱码的解决方法
Jun 21 PHP
Php-Redis安装测试笔记
Mar 05 PHP
PHP5.2下preg_replace函数的问题
May 08 PHP
php简单图像创建入门实例
Jun 10 PHP
PHP利用imagick生成组合缩略图
Feb 19 PHP
php生成酷炫的四个字符验证码
Apr 22 PHP
php set_include_path函数设置 include_path 配置选项
Oct 30 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
为php4加入动态flash文件的生成的支持
2006/10/09 PHP
新浪微博OAuth认证和储存的主要过程详解
2015/03/27 PHP
PHP邮件群发机实现代码
2016/02/16 PHP
php mailer类调用远程SMTP服务器发送邮件实现方法
2016/03/04 PHP
ThinkPHP模板标签eq if 中区分0,null,false的方法
2017/03/24 PHP
关于JAVASCRIPT urldecode URL解码的问题
2012/01/08 Javascript
如何在MVC应用程序中使用Jquery
2014/11/17 Javascript
在linux中使用包管理器安装node.js
2015/03/13 Javascript
Js+php实现异步拖拽上传文件
2015/06/23 Javascript
js实现将选中内容分享到新浪或腾讯微博
2015/12/16 Javascript
Bootstrap的class样式小结
2016/12/01 Javascript
a标签置灰不可点击的实现方法
2017/02/06 Javascript
手把手教你使用TypeScript开发Node.js应用
2019/05/06 Javascript
解决layui数据表格table的横向滚动条显示问题
2019/09/04 Javascript
小程序跳转H5页面的方法步骤
2020/03/06 Javascript
[01:09]模型精美,特效酷炫!TI9不朽宝藏Ⅰ鉴赏
2019/05/10 DOTA
[48:28]完美世界DOTA2联赛循环赛FTD vs Magma第二场 10月30日
2020/10/31 DOTA
Python中使用装饰器来优化尾递归的示例
2016/06/18 Python
Python拼接微信好友头像大图的实现方法
2018/08/01 Python
使用Python和Prometheus跟踪天气的使用方法
2019/05/06 Python
在Python中利用pickle保存变量的实例
2019/12/30 Python
pytorch之添加BN的实现
2020/01/06 Python
Russell Stover巧克力官方网站:美国领先的精美巧克力制造商
2016/11/27 全球购物
美国和加拿大计算机和电子产品购物网站:TigerDirect.com
2019/09/13 全球购物
出国留学自荐信
2013/10/25 职场文书
学生会感恩节活动方案
2014/10/11 职场文书
商务英语求职信范文
2015/03/19 职场文书
通知的写法
2015/04/23 职场文书
小兵张嘎观后感300字
2015/06/03 职场文书
毕业生学校组织意见
2015/06/04 职场文书
新闻稿格式范文
2015/07/18 职场文书
2015年医院保卫科工作总结
2015/07/23 职场文书
推广普通话宣传标语口号
2015/12/26 职场文书
vue实现水波涟漪效果的点击反馈指令
2021/05/31 Vue.js
PHP获取学生成绩的方法
2021/11/17 PHP
Python加密与解密模块hashlib与hmac
2022/06/05 Python