Загрузка изображения с помощью формы Zend проблема с определением расширения изображения

#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.