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

功能:完成从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);
//从服务器下载文件树的程序

?>

:希望能给大家带去帮助,谢谢

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值