php实现从ftp服务器上下载文件树到本地电脑的程序

 更新时间:2009年02月10日 21:52:35   作者:  
功能:完成从ftp服务器端下载文件到本地电脑(整体复制即目录树是一样的)
复制代码 代码如下:

/*
用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项目打包方法

    大家经常会接到一些编程的活,例如设计企业网站,做做财务,统计系统什么的。或许是因为朋友的需求,或许图个零花。不管什么原因吧。等程序做好了,给对方展示、安装,就成了问题。
    2008-09-09
  • php 团购折扣计算公式

    php 团购折扣计算公式

    php 团购折扣计算公式,因为最近需要调用天天团购程序的数据,代码比较不好找,所以直接自己写个代码读取mysql的数据。
    2011-11-11
  • php 更新数据库中断的解决方法

    php 更新数据库中断的解决方法

    使用PHP程序更新数据库,总是到160000条时中断, 查看LOG,显示超过PHP最大执行时间的错误, 只需要在PHP脚本中加入如下语句
    2009-06-06
  • php GD绘制24小时柱状图

    php GD绘制24小时柱状图

    h24 这个函数就是生成柱状图的 函数需要一个字符串作为参数 这个参数的格式为:每小时的数量按照从0-23点的顺序加逗号连接在一起 可以看例子里面的
    2008-06-06
  • PHP实现的多进程控制demo示例

    PHP实现的多进程控制demo示例

    这篇文章主要介绍了PHP实现的多进程控制demo,涉及php信号处理与进程控制相关操作技巧,需要的朋友可以参考下
    2019-07-07
  • PHP读取网页文件内容的实现代码(fopen,curl等)

    PHP读取网页文件内容的实现代码(fopen,curl等)

    php小偷程序中经常需要获取远程网页的内容,下面是一些实现代码,需要的朋友可以惨况下。
    2011-06-06
  • 在同一窗体中使用PHP来处理多个提交任务

    在同一窗体中使用PHP来处理多个提交任务

    在PHP中的处理窗体数据比其它网页程序语言更简单——如果你使用这种语言一段时间后,你会发现这是一个不可争辩的事实。这种操作的简易性使它可以容易地处理更为复杂的窗体事件,包括今天讨论的主题,即在同一个窗体中通过多个按钮来处理不同的任务。
    2008-05-05
  • PHP迭代与递归实现无限级分类

    PHP迭代与递归实现无限级分类

    这篇文章主要为大家详细介绍了PHP迭代与递归实现无限级分类,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-08-08
  • PHP 最大运行时间 max_execution_time修改方法

    PHP 最大运行时间 max_execution_time修改方法

    有一种简单的方法,就是在脚本中直接修改配置文件
    2010-03-03
  • PHP动态编译出现Cannot find autoconf的解决方法

    PHP动态编译出现Cannot find autoconf的解决方法

    这篇文章主要介绍了PHP动态编译出现Cannot find autoconf的解决方法,是PHP程序设计中经常会遇到的问题,需要的朋友可以参考下
    2014-11-11

最新评论