как получить путь и имя загруженного файла в Zend framework

У меня есть форма, позволяющая пользователям загружать файл. С моего контроллера я хочу получить путь с именем файла. Я использую метод getFileName (). Но это дает следующую ошибку:

Message: Method getFileName does not exist 

Ниже показано действие моего контроллера:

public function addAction()
    {
        $form = new Application_Form_Student();
        $form->setAttrib('enctype', 'multipart/form-data');
        $form->submit->setLabel('Add');
        $this->view->form = $form;

        if ($this->getRequest()->isPost()) {
            $formData = $this->getRequest()->getPost();
            if ($form->isValid($formData)) {
                $name = $form->getValue('name');
                $email = $form->getValue('email');
                $photo = $form->getValue('photo');
                $location = $form->getFileName('photo'); 
                $students = new Application_Model_DbTable_Students();
                $students->addStudent($name, $email);

                $this->_helper->redirector('index');
            } else {
                $form->populate($formData);
            }
        }

    }

person ehp    schedule 30.12.2012    source источник
comment
Если файл загружен успешно, он должен находиться в папке TEMP, если вы сами не указали путь, в противном случае загруженный файл будет присутствовать в указанной вами папке, и имя файла не изменится.   -  person Joddy    schedule 30.12.2012
comment
@Joddy Я указал путь в классе формы. Но я хочу получить его от своего контроллера. в чем смысл сообщения об ошибке: Метод getFileName не существует   -  person ehp    schedule 30.12.2012
comment
getFileName не является допустимым МЕТОДОМ ОБЪЕКТА ФОРМЫ, вам необходимо вызвать это на адаптере передачи файлов Zend Http ОБЪЕКТ, а не на ОБЪЕКТ ФОРМЫ   -  person Joddy    schedule 30.12.2012
comment
используйте Zend_File_Transfer_Adapter_Http (), проверьте, работает ли это для вас, или правильно настройте Zend_Form_Element_File. Это будет работать.   -  person Joddy    schedule 30.12.2012


Ответы (1)


Проверьте, работает ли это -

public function addAction()
{
    $form = new Application_Form_Student();
    $form->setAttrib('enctype', 'multipart/form-data');
    $form->submit->setLabel('Add');
    $this->view->form = $form;

    if ($this->getRequest()->isPost()) {
        $formData = $this->getRequest()->getPost();
        if ($form->isValid($formData)) {
            $upload = new Zend_File_Transfer_Adapter_Http();
            $upload->setDestination("/uploads/files/");


            try { 
                 $upload->receive();
                 $location = $upload->getFileName('photo');
            }                
            catch(Zend_File_Transfer_Exception $e){
                 $e->getMessage();
            }
        } else {
            $form->populate($formData);
        }
    }

}

Второй метод, о котором я говорил. ФОРМА ФАЙЛОВОГО ЭЛЕМЕНТА Настройки Zend Framework: загрузка файла с помощью элемента формы Zend

person Joddy    schedule 30.12.2012
comment
Подскажите, пожалуйста, как получить только имя файла вместо пути - person ehp; 31.12.2012