加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

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

发布时间:2020-12-13 16:56:16 所属栏目:PHP教程 来源:网络整理
导读:我正在编写一个用于连接FTP的脚本,然后下载内容. 现在我的问题是检测每个项目是文件夹还是文件. 我的第一个想法是尝试使用ftp_chdir,但这需要我使用@来抑制错误,我不希望这样做(我不希望抑制错误,而是更愿意正确处理它们). 有没有其他方法来检查我的项目是文
我正在编写一个用于连接FTP的脚本,然后下载内容.

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

有没有其他方法来检查我的项目是文件还是文件夹?

解决方法

尝试ftp_chdir的坏处不是需要抑制错误.没关系,只要你有合理的理由期待错误.这更改了目录的副作用.

如果我采取这个方向,我会尝试使用ftp_size,因为它没有任何副作用.它应该失败的目录和成功的文件.

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

或者,在ftp_rawlist命令的用户注释中有MLSD的实现:
https://secure.php.net/manual/en/function.ftp-rawlist.php#101071

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

或者,如果要连接到一个特定的服务器,因此您知道其目录列表的格式,则可以使用ftp_rawlist,并解析其输出以确定条目是文件还是文件夹.

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

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

如果条目是一个目录,它是告诉你的领先者.

您可能很幸运,在您的具体情况下,您可以通过文件名告诉目录中的文件(即所有文件都有扩展名,而子目录则没有).

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读