2010-05-08 52 views
0

我正在编写一个小脚本来上传和检测使用Zend Framework的MIME类型。为了设计目的,我不能使用Zend_Form,而是使用正常的。我只是从手册申请:使用Zend Zend_File_Transfer_Adapter_Http时无法检测到MIME类型!

$ adapter = new Zend_File_Transfer_Adapter_Http(); $ files = $ adapter-> getFileInfo(); $ mime = $ files-> getMimeType();

但系统通知funcion getMimeType()不存在。然后,我试着:

$ adapter = new Zend_File_Transfer(); $ files = $ adapter-> getFileInfo(); $ mime = $ files-> getMimeType();

这一次,它也没有工作。那么,我怎样才能获得MIME类型呢?

非常感谢你的帮助

回答

1

相信$files在这两个你片断也只是一个简单的array,每个元素应该包含一个键表示类型,就像这样:

$files = $adapter->getFileInfo(); 

foreach ($files as $file) { 
    // Print the MIME Type for $file 
    echo $file['type']; 
} 

Zend_File_Transfer_Adapter_Abstract类定义了用于确定MIME类型的代码。这取决于Fileinfo类/扩展名或mime_content_type()函数(我相信旧版本Fileinfo的一部分)。

http://us2.php.net/manual/en/book.fileinfo.php

PHP 5.3包括Fileinfo默认。之前的5.3版本要求使用PECL扩展:

http://pecl.php.net/package/Fileinfo

+0

awgy嗨, 感谢您的提示,我想,它的工作,但即使我上传了PDF或JPEG文件,它至今仍是公认“应用/八位字节流”。我正在使用MAC进行开发,但是我在使用PHP 5.2.x的CentOS上进行了测试。我是否需要安装任何东西来识别正确的MIME类型? – mrblue 2010-05-08 17:32:34

+0

添加了有关MIME检测支持的其他信息 - 请告诉我这是否对您无效。 – awgy 2010-05-08 18:18:16

+0

嗨awgy, 虽然我无法在MAC上安装Fileinfo软件包,但我试过在我的CentOS盒子上,它仍然只将PDF文件识别为“application/octet-stream”。我试图重新启动Apache来重试,但无法得到它。非常感谢。 – mrblue 2010-05-09 16:04:04