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 相关文章推荐
不用GD库生成当前时间的PNG格式图象的程序
Oct 09 PHP
在命令行下运行PHP脚本[带参数]的方法
Jan 22 PHP
php下连接ftp实现文件的上传、下载、删除文件实例代码
Jun 03 PHP
php数字游戏 计算24算法
Jun 10 PHP
php适配器模式介绍
Aug 14 PHP
php实现信用卡校验位算法THE LUHN MOD-10示例
May 07 PHP
2个比较经典的PHP加密解密函数分享
Jul 01 PHP
PHP实现图片旋转效果实例代码
Oct 01 PHP
PHP页面间传递值和保持值的方法
Aug 24 PHP
PHP编程获取音频文件时长的方法【基于getid3类】
Apr 20 PHP
详谈PHP中public,private,protected,abstract等关键字的用法
Dec 31 PHP
laravel 之 Eloquent 模型修改器和序列化示例
Oct 17 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
一个多文件上传的例子(原创)
2006/10/09 PHP
Javascript Math对象
2009/08/13 Javascript
javascript 面向对象编程 function也是类
2009/09/17 Javascript
点击隐藏页面左栏或右栏实现js代码
2013/04/01 Javascript
jquery实现的可隐藏重现的靠边悬浮层实例代码
2013/05/27 Javascript
js函数参数设置默认值的一种变通实现方法
2014/05/26 Javascript
extjs 时间范围选择自动判断的实现代码
2014/06/24 Javascript
AngularJS入门教程(零):引导程序
2014/12/06 Javascript
javascript定义变量时带var与不带var的区别分析
2015/01/12 Javascript
JavaScript获取表单enctype属性的方法
2015/04/02 Javascript
AngularJS入门教程之AngularJS模型
2016/04/18 Javascript
详解在vue-cli项目中使用mockjs(请求数据删除数据)
2017/10/23 Javascript
详解vue中移动端自适应方案
2019/05/05 Javascript
[01:50]WODOTA制作 DOTA2中文宣传片《HERO》
2013/04/28 DOTA
[00:33]2016完美“圣”典风云人物:BurNIng宣传片
2016/12/10 DOTA
[54:05]DOTA2-DPC中国联赛定级赛 SAG vs iG BO3第一场 1月9日
2021/03/11 DOTA
Python实现识别手写数字 Python图片读入与处理
2020/03/23 Python
对python中dict和json的区别详解
2018/12/18 Python
PyTorch中Tensor的维度变换实现
2019/08/18 Python
Django框架 Pagination分页实现代码实例
2019/09/04 Python
Python Sympy计算梯度、散度和旋度的实例
2019/12/06 Python
如何利用python生成MD5并去重
2020/12/07 Python
伯克斯奥特莱斯:Burkes Outlet
2019/03/30 全球购物
电信专业应届生自荐信
2013/09/28 职场文书
中学教师实习自我鉴定
2013/09/28 职场文书
哈理工毕业生的求职信
2013/12/22 职场文书
党的群众路线教育实践活动心得体会
2014/03/03 职场文书
《李时珍夜宿古寺》教学反思
2014/04/09 职场文书
《画》教学反思
2014/04/14 职场文书
2014年手术室工作总结
2014/11/26 职场文书
师范生小学见习总结
2015/06/23 职场文书
纪律委员竞选稿
2015/11/19 职场文书
js基础语法与maven项目配置教程案例
2021/07/15 Javascript
CSS实现单选折叠菜单功能
2021/11/01 HTML / CSS
vue 把二维或多维数组转一维数组
2022/04/24 Vue.js
Apache自带的ab压力测试工具的实现
2022/07/23 Servers