2010-05-08 50 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