gpt4 book ai didi

php - 使用 PHP 检查 FTP 条目是文件还是文件夹

转载 作者:可可西里 更新时间:2023-10-31 23:04:13 24 4
gpt4 key购买 nike

我正在编写用于连接到 FTP 的脚本,然后下载内容。

现在我的问题是检测每个项目是文件夹还是文件。我的第一个想法是尝试使用 ftp_chdir,但这需要我使用 @ 来抑制错误,我不想这样做(我不希望抑制错误,但更愿意正确处理它们)。

还有其他方法可以检查我的项目是文件还是文件夹吗?

最佳答案

尝试 ftp_chdir 的坏处不是需要抑制错误。没关系,只要您有合理的理由预计会出现错误。这是更改目录的副作用。

如果我选择那个方向,我会尝试 ftp_size相反,因为它没有任何副作用。它应该对目录失败,对文件成功。


理想的解决方案是使用返回可靠的机器可读目录列表的 MLSD FTP 命令。但是 PHP 仅从 7.2 开始支持它的 ftp_mlsd function .检查 "type" 条目的 dir 值。

或者,ftp_rawlist命令的用户评论中有一个MLSD的实现:
https://www.php.net/manual/en/function.ftp-rawlist.php#101071

在采用这种方法之前,首先检查您的 FTP 服务器是否支持 MLSD,因为并非所有 FTP 服务器都支持(特别是 IIS and vsftpd don't)。


或者,如果你连接到一个特定的服务器,那么你知道它的目录列表格式,你可以使用 ftp_rawlist ,并解析其输出以确定条目是文件还是文件夹。

*nix 服务器上的典型 list 如下:

drwxr-x---   3 vincent  vincent      4096 Jul 12 12:16 public_ftp
drwxr-x--- 15 vincent vincent 4096 Nov 3 21:31 public_html
-rwxrwxrwx 1 vincent vincent 11 Jul 12 12:16 file.txt

它是前导的 d 告诉您条目是否是目录。


您可能很幸运,在您的特定情况下,您可以通过文件名从目录中区分文件(即所有文件都有扩展名,而子目录没有)。

关于php - 使用 PHP 检查 FTP 条目是文件还是文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29799181/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com