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新手上路(十)
Oct 09 PHP
手把手教你使用DedeCms V3的在线采集图文教程
Apr 03 PHP
劣质的PHP代码简化
Feb 08 PHP
PHP 截取字符串函数整理(支持gb2312和utf-8)
Feb 16 PHP
php读取文件内容至字符串中,同时去除换行、空行、行首行尾空格(Zjmainstay原创)
Jul 31 PHP
IIS+fastcgi下PHP运行超时问题的解决办法详解
Jun 20 PHP
php输出echo、print、print_r、printf、sprintf、var_dump的区别比较
Jun 21 PHP
ThinkPHP分页实例
Oct 15 PHP
Yii实现多按钮保存与提交的方法
Dec 03 PHP
如何打开php的gd2库
Feb 09 PHP
PHP用户注册邮件激活账户的实现代码
May 31 PHP
php输出反斜杠的实例方法
Sep 19 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
浅析ThinkPHP缓存之快速缓存(F方法)和动态缓存(S方法)(日常整理)
2015/10/26 PHP
JavaScript类和继承 prototype属性
2010/09/03 Javascript
CodeMirror2 IE7/IE8 下面未知运行时错误的解决方法
2012/03/29 Javascript
DOM基础教程之事件对象
2015/01/20 Javascript
zepto中使用swipe.js制作轮播图附swipeUp,swipeDown不起效果问题
2015/08/27 Javascript
javascript判断回文数详解及实现代码
2017/02/03 Javascript
Angular组件化管理实现方法分析
2017/03/17 Javascript
浅谈jquery fullpage 插件增加头部和版权的方法
2018/03/20 jQuery
RequireJS用法简单示例
2018/08/20 Javascript
在Vue项目中,防止页面被缩放和放大示例
2019/10/28 Javascript
jQuery擦除插件eraser使用方法详解
2020/01/11 jQuery
简单了解JavaScript作用域
2020/07/31 Javascript
JavaScript实现简单日历效果
2020/09/11 Javascript
[04:02]2014DOTA2国际邀请赛 BBC每日综述中国战队将再度登顶
2014/07/21 DOTA
python新手经常遇到的17个错误分析
2014/07/30 Python
python实现对excel进行数据剔除操作实例
2017/12/07 Python
安装python3的时候就是输入python3死活没有反应的解决方法
2018/01/24 Python
利用pandas将numpy数组导出生成excel的实例
2018/06/14 Python
用Python将一个列表分割成小列表的实例讲解
2018/07/02 Python
python中使用zip函数出现错误的原因
2018/09/28 Python
Python 获取主机ip与hostname的方法
2018/12/17 Python
python图形绘制奥运五环实例讲解
2019/09/14 Python
Django实现列表页商品数据返回教程
2020/04/03 Python
python UIAutomator2使用超详细教程
2021/02/19 Python
Canvas 文本转粒子效果的实现代码
2019/02/14 HTML / CSS
string = null 和string = ''的区别
2013/04/28 面试题
2014年两会学习心得范例
2014/03/17 职场文书
职业生涯规划书怎么写?
2014/09/14 职场文书
超市督导岗位职责
2015/04/10 职场文书
锦旗赠语
2015/06/23 职场文书
go设置多个GOPATH的方式
2021/05/05 Golang
面试被问select......for update会锁表还是锁行
2021/11/11 MySQL
SQL优化老出错,那是你没弄明白MySQL解释计划用法
2021/11/27 MySQL
利用JuiceFS使MySQL 备份验证性能提升 10 倍
2022/03/17 MySQL
Java实现添加条码或二维码到Word文档
2022/06/01 Java/Android
MySQL主从切换的超详细步骤
2022/06/28 MySQL