file-> getMimeType () всегда возвращает приложение / октет-поток с Zend Framework

мой элемент формы файла очень прост:

$this->archivo = new Zend_Form_Element_File('archivo'); $this->archivo->setLabel('Archivo:') ->setRequired(true) ->setDestination(UPLOAD_PATH) ->addValidator('Count', false, 1) ->addValidator('Size', false, MAX_FILE_SIZE) ->addValidator('Extension', false, Application_Form_Multimedia_SubirArchivo::EXTENSIONES_PERMITIDAS); $this->addElement($this->archivo); 

но, загружая файл (загружает ОК), я пытаюсь получить тип MIME, но для каждого файла тот же:

 $form->archivo->getMimeType() 

Он всегда возвращает application / octet-stream , независимо от того, какой файл я пытаюсь загрузить.

Почему это происходит, я что-то пропустил? благодаря

Наиболее вероятная причина этого заключается в том, что если в вашей установке PHP не доступны ни расширения fileinfo, ни mime_magic, базовый метод, который вы используете, будет отбрасываться по умолчанию для mimetype:

 if (empty($result[$key])) { $result[$key] = 'application/octet-stream'; } 

Предложите вам проверить метод getMimeType () в Zend_File_Transfer_Adapter_Abstract – где этот фрагмент и из него вызывается из Zend_Form_Element_File :: getMimeType () – для получения дополнительной информации, а затем проверьте, какие расширения вы установили и правильно исправите.

сегодня Zend Framework – 1.11.10, и решение этой проблемы не будет передано из ZF2. вот отчет об ошибке .

вот патч . идея патча заключается в том, что в php5.3 mimefile включен в php, и нам больше не нужен внешний файл.

также, чтобы использовать это исправление, вы должны добавить валидатор следующим образом:

 $upload->addValidator('IsImage', false, array('magicfile'=>false)); 

Октет-поток – это, как правило, любой файл, который должен быть открыт в другом приложении. Видеть:

http://kb.iu.edu/data/agtj.html

Приложение MIME с типом контента «application / octet-stream» является двоичным файлом. Как правило, это приложение или документ, который должен быть открыт в приложении, таком как электронная таблица или текстовый процессор. Если вложение имеет расширение имени файла, связанное с ним, вы можете указать, какой файл он есть. Например, расширение .exe указывает, что это программа Windows или DOS (исполняемый файл), а файл, заканчивающийся на .doc, вероятно, должен быть открыт в Microsoft Word.