在PHP中通过FTP获取Mime类型

时间:2009-05-28 20:06:14

标签: php security ftp mime-types

我正在用PHP编写一个在FTP服务器上显示文件的对象。我使用PHP的内置FTP函数来检索我需要的大部分细节(文件名,大小,最后修改等)。但是,没有函数可以在服务器上获取文件的mime类型。我尝试了两种不同的方法,但我遇到了一些问题。

使用fileinfo如下所示需要34秒才能获得10个文件的mime类型:

$finfo = new finfo(FILEINFO_MIME);
$mime_type = $finfo->file('ftp://username:password@host/path/file');

使用mime_content_type()执行相同的操作只需要6秒钟:

$mime_type = mime_content_type('ftp://username:password@host/path/file');

这里有两个问题,我正在寻求一些帮助。首先是安全。使用任一方法都会传输登录凭证纯文本(当然,FTP本质上是不安全的,但这只会使情况变得更糟)。第二个问题更多是最佳实践。显然mime_content_type()是这两种方法中最好的,因为它的表现要好得多,但它已被弃用了。这样做有更好的,可能更安全的方式吗?我无法在FTP服务器上安装任何东西,因为它打算在任何希望使用它的FTP服务器上使用,因此使用Web服务是不可能的。

提前致谢, ~James Armes

1 个答案:

答案 0 :(得分:3)

延迟的原因是您需要读取每个文件的魔术字节并使用服务器的魔术文件来确定它的类型。

因此,您正在FTP中打开传输并读取该信息,这在FTP中并不是那么快。