记录学习过程中的点点滴滴
使用php的FTP扩展实现FTP目录文件的下载
程序功能:能够将FTP上的文件目录拷贝到本地目录,能够递归获取目录及文件内容,同时保持目录结构不变
1,在安装php时,加入ftp 扩展 ./configure –enable-ftp
2,涉及到php的ftp有关函数包括:ftp_connect(), ftp_login(),ftp_chdir(),ftp_nlist()等,这些函数的用法请参看php手册
3,使用步骤:
/** * ftpInfo包括ftp_ip, ftp_port, ftp_user, ftp_passwd等信息 */ $resFtpHandler = ftp_init($ftpInfo); if ($resFtpHandler === false) { die("FTP Connect error."); } $bolDownloadRes = ftp_download_directory($resFtpHandler, $ftpDir,$yourLocalDir);
代码如下:
/** * @brief 初始化FTP连接 * @param $ftpInfo * @return resource ftp连接句柄 */ function ftp_init($ftpInfo) { $resFtpHandler = ftp_connect($ftpInfo['ftp_ip'], $ftpInfo['ftp_port'], 90); if ($resFtpHandler === false) { return false; } $bolFtpLogin = ftp_login($resFtpHandler, $ftpInfo['ftp_user'], $ftpInfo['ftp_passwd']); if ($bolFtpLogin === false) { return false; } return $resFtpHandler; }
/** * @brief FTP下载目录,将目录下载到本地 * @param $strSrcDirectoryName FTP目录名 * @param $strDestDirectoryName 本地保存的目录地址 * @return boolean (true|false) */ function ftp_download_directory($resFtpHandler, $strSrcDirectoryName, $strDestDirectoryName = null) { if (is_null($resFtpHandler)) { return false; } if (is_null($strDestDirectoryName) === false) { if (is_dir($strDestDirectoryName) === false) { $bolRes = mkdir($strDestDirectoryName, 0777, true); } chdir($strDestDirectoryName); } if ($strSrcDirectoryName != '.') { if (@ftp_chdir($resFtpHandler, $strSrcDirectoryName) === false) { //是文件,直接拷贝 $bolRes = ftp_get($resFtpHandler, $strSrcDirectoryName, $strSrcDirectoryName, FTP_BINARY); if ($bolRes === false) { return false; } return true; } if (is_null($strDestDirectoryName)) { if (is_dir($strSrcDirectoryName) === false) { $bolRes = mkdir($strSrcDirectoryName, 0777, true); } chdir($strSrcDirectoryName); } } $arrChildDirectory = ftp_nlist($resFtpHandler, '.'); /** 空目录 直接返回上层目录 */ if ($arrChildDirectory === false) { ftp_chdir($resFtpHandler, '..'); chdir('..'); return false; } foreach ($arrChildDirectory as $strChildDirectory) { if ($strChildDirectory == '.' || $strChildDirectory == '..') { continue; } //如果是目录, 进行递归 if (@ftp_chdir($resFtpHandler, $strChildDirectory) === true) { ftp_chdir($resFtpHandler, '..'); ftp_download_directory($resFtpHandler, $strChildDirectory); } else { //不是目录,是文件,直接下载 //echo "current directory ".getcwd()."\n"; //echo "ftp currecnt directory ".ftp_pwd($resFtpHandler)."\n"; $bolRes = ftp_get($resFtpHandler, $strChildDirectory, $strChildDirectory, FTP_BINARY); if ($bolRes === false) { return false; } } } ftp_chdir($resFtpHandler, '..'); chdir('..'); return true; }
本文地址:http://www.yaronspace.cn/blog/index.php/archives/572
来自yaronspace.cn 本文链接:http://yaronspace.cn/blog/archives/572最多留言日志
这篇文章由admin于2010 年 05 月 05 日 11:00发表在未分类。你可以订阅RSS 2.0 也可以发表评论或引用到你的网站。 |
大约10年前
挺好用的,谢谢