php FTP 获取文件夹名称和文件名称


   
  <?php
  
error_reporting(7);

$ftp_server = "127.0.0.1";
$ftp_user = "user_d";
$ftp_pass = "12345";
// 尝试连接FTP服务器
$conn_id = ftp_connect($ftp_server);
// 尝试登陆FTP
if (@ftp_login($conn_id, $ftp_user, $ftp_pass)) {
$m=0;
$f_arr=array();
$f_n=array();
$filelist=ftp_rawlist($conn_id,$f_name);
foreach($filelist as $file){
$aa=explode(' ', $file,26); //数组最大长度26 , 防止文件名内含有空格
$aa=array_reverse($aa); // 颠倒数组
//$aa[0]=iconv("gb2312", "UTF-8", $aa[0]); // 转码
$bb=array_reverse(explode('.', $aa[0])); //对文件全名称进行分割,得到文件后缀类型,防止文件中含有点(.)
if(!empty($bb[0]) && empty($bb[1])){ //文件夹
$f_n[0]=urlencode($aa[0]); // 文件夹名称 URI编码
$f_n[1]=""; //文夹件类型为 ""
$f_arr[$m]=$f_n;
$m++;
}else if($bb[0]!=$aa[0] && !empty($bb[1])){
if( $bb[0]=="html" || $bb[0]=="php" || $bb[0]=="css" || $bb[0]=="js" || $bb[0]=="doc" || $bb[0]=="docx" || $bb[0]=="xls" || $bb[0]=="xlsx" || $bb[0]=="rar" || $bb[0]=="zip" || $bb[0]=="txt" ){
$aa[0]=str_replace(".".$bb[0],"",$aa[0]); //替换掉文件名中的文件类型后缀
$f_n[0]=urlencode($aa[0]); // 文件夹名称 URI编码
$f_n[1]=$bb[0]; //文件类型
$f_arr[$m]=$f_n;
$m++;
}
}
}
$f_arr[$m]=$m;//数组最后输出文件个数
echo json_encode($f_arr);
ftp_close($conn_id);
}
?>

代码如上,我可以获取到FTP文件夹名称和文件名称,但是步骤过于繁杂,而且还有一些bug
在网上找都没有能获取FTP文件夹名称和文件名称的
解释以下函数:
ftp_nlist() : 只能输出FTP目录里的文件名称,如果目录中只有文件夹,则输出Array( )
ftp_rawlist() : 输出FTP目录里的所有的(包括系统文件和隐藏文件)文件和文件夹的详细信息(权限,修改时间,....)
我现在想用一个类似ftp_nlist() 的函数 但能输出目录中文件夹名称
不知应该怎样写

还有还有~~~~
opendir()不是可以打开FTP目录么,支持ftp://xxxxxxx 的格式
同问怎么写法

php

ronson 12 years, 1 month ago

不太明白你的意思,ftp_rawlist 不是已经全部给出了么,把文件名过滤出来显示出来不就是所有的文件夹和文件名称了么

   
  <?php
  
$conn = ftp_connect("172.16.1.151");
if(ftp_login($conn, "test", "test"))
{
$filelist = ftp_rawlist($conn, ".");
foreach($filelist as $file)
{
$filename = preg_replace("/.+[:]*\\d+\\s/", "", $file);
echo $filename . "\n";
}
}

ftp_close($conn);

稍微修改一下可以当成一个函数回显用,支持空格哦,祝好
斑驳敬上

浅月0oo answered 12 years, 1 month ago

Your Answer