мой элемент формы файла очень прост:
$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.