#zend-framework #file-upload #zend-form
#zend-framework #загрузка файла #zend-form
Вопрос:
У меня возникли проблемы с определением типа файла изображения, которое я загрузил с помощью Zend Framework. Каждый раз, когда я пытаюсь определить тип файла с помощью $_FILES[‘File’][‘type’], я всегда получаю applicationoctet-stream . Только когда я определяю тип перед проверкой, опубликована ли форма, я получаю правильное расширение. Кто-нибудь знает, почему? Есть ли более приятный способ справиться с этим?
это работает:
$form = new Form_Reg;
$this->view->Reg = $form;
if(isset($_FILES['File']['type'])){
$filetype = $file = $_FILES['File']['type'];
}
if ($this->getRequest()->isPost()){
$formData = $this->_request->getPost();
if($form->isValid($formData)){
echo $filetype;
exit;
}
}
Это не работает:
$form = new Form_Reg;
$this->view->Reg = $form;
if ($this->getRequest()->isPost()){
$formData = $this->_request->getPost();
if($form->isValid($formData)){
$filetype = $file = $_FILES['File']['type'];
echo $filetype;
exit;
}
}
Комментарии:
1. Всегда, когда я задаю вопрос, я нахожу ответ :): это гораздо более приятный способ получения расширения: $arr_pathinfo = pathinfo($form->File-> GetFileName()); $extension = strtolower($arr_pathinfo[‘extension’]);
2. Если ваш ответ правильный, пожалуйста, отправьте этот комментарий в качестве ответа, а затем примите его, чтобы все его легко увидели.
Ответ №1:
Я видел больше вопросов об этом в stackoverflow, но не смог найти ответ, который решил мою конкретную проблему. Проблема заключалась в том, что zend form не могла проверить, является ли загруженный файл изображением, как только он начинал обрабатывать форму, тип файла изменялся на applicationoctet-stream, независимо от того, какой файл был загружен.
Хитрость заключалась в том, чтобы настроить php.ini, найти это и раскомментировать его: extension=php_fileinfo.dll .
Тем не менее, мне интересно, что zend_form делает для того, чтобы fileinfo был необходим, глобальный файл $ _FILES работает без fileinfo.