cURL DIRLISTONLY可以区分文件和目录吗?

时间:2017-01-09 14:28:52

标签: php curl

这将打印目录内容列表。但是,该目录包含图像和子目录,我无法区分它们。

header('Content-Type: text/plain');

$c = curl_init();
curl_setopt($c, CURLOPT_URL, 'ftp://username:password@ftp.example.com/Images/');
curl_setopt($c, CURLOPT_DIRLISTONLY, TRUE);
$r = curl_exec($c);
echo $r;

搜索在cURL邮件列表中显示someone else asking the same question,但我找不到答案。

理想情况下,我希望将内容列表作为PHP对象或数组接收,而不是作为我需要再次解析的文本。文件名不太可能包含换行符,所以我可能会拆分它们,但这感觉很脆弱。

我实际上想要做的是下载整个目录及其所有内容。

1 个答案:

答案 0 :(得分:1)

方法1

使用FTP Functions代替。您可以使用ftp_nlist从ftp中获取列表,并检查文件或文件夹是否为ftp_chdir。这是php.net的示例:

function ftp_is_dir( $conn_id,  $dir )
{
    if( @ftp_chdir( $conn_id, $dir ) ) {
        ftp_chdir( $conn_id, '/../' );
        return true;
    } else {
        return false;
    }
}

方法2

在服务器上创建php文件,在您请求的目录中为您显示文件夹列表和文件列表。例如,使用domain.com/get-list.php?folder=something/another-folder获取列表并使用json_encode对列表进行编码,并使用json_decode在服务器上对其进行解码。

此方法无需FTP即可使用。

方法3

您可以使用is_dir — Tells whether the filename is a directory

  

自PHP 5.0.0起,此功能也可用于某些 URL   的包装即可。请参阅支持的协议和包装器以确定哪个   包装器支持stat()系列功能。