这些天由于项目需要,要把远程的主机文件目录即FTP里面的文件目录显示出来。网上找了好多都没有一个理想的方法,所有自己尝试写了一段代码。今儿赶紧把它拿上来,做下总结。

主要使用了PHP里面的FTP函数。首先需要进行FTP连接,如下代码:

/**
* 初始化FTP连接
* $ftp_ip FTP地址或者IP 
* $ftp_user FTP用户名
* $ftp_passwd FTP密码
*/
$conn = ftp_connect($ftp_ip) or die("FTP链接失败\n");
$FtpLogin = ftp_login($conn,$ftp_user,$ftp_passwd);
if($FtpLogin)
{
    $files = ftp_nlist($conn,'.');
}

链接成功后,利用ftp_nlist函数首先将FTP中的文件根目录显示出来

<?php

foreach($files as $k => $file)    //根目录
{
  $thisFile = basename($file);
  if($thisFile != '.' && $thisFile != '..')
  {
	$dr1 = substr($thisFile,0,1);
	$loc = strpos($thisFile,'.');
	if(empty($loc) && $dr1 != '.' )
	{
          $newdir = ftp_nlist($conn, './'.$file);
	  echo $thisFile;
          if(!empty($newdir))
          {
            foreach($newdir as $key=>$vol)    //二级目录
            {
    		$thisFile2 = basename($vol);
    		if($thisFile2 != '.' && $thisFile2 != '..')
    		{
                   $dir2 = substr($thisFile2,0,1);
    		   $loc2 = strpos($thisFile2,'.');
    		  if(empty($loc2) && $dir2 != '.' )
    		  {
    			 echo $thisFile2;
    			 $newdir2 = ftp_nlist($conn, './'.$vol);
                         if(!empty($newdir2))
                         {
                             foreach($newdir2 as $key2=>$vol2)    //三级目录
        		     {
        			$thisFile3 = basename($vol2);
        			if($thisFile3 != '.' && $thisFile3 != '..')
        			{
        			  $dir3 = substr($thisFile3,0,1);
        		          $loc3 = strpos($thisFile3,'.');
        			  if(empty($loc3) && $dir3 != '.' )
        			  {
        			     echo $thisFile3;
        			  }
        			}}}}}
    			}
            }
		}
  }
}
ftp_close($conn);
?>

这样一个简单的远程FTP文件目录显示就完成了,不过里面只是显示了三级目录,感兴趣的朋友可以拓展一下,利用递归或其他方法来全部显示或者控制显示的文件目录级数。方法很简单,熟悉PHP一看就明白。有什么好的建议的,希望大家多多提出!