2015-05-08 4 views
0

Я пытаюсь загрузить файл с ZF2, но файл не загружается. Форма представляется действительной. Что-то не так с моим кодом?Загрузка файла ZF2 не работает

Если я загружаю изображение с помощью php move_uploaded_files, все работает должным образом.

Форма:

class LogoUploadForm extends Form { 

    public function init() { 
     $this->add([ 
      'type' => 'File', 
      'name' => 'logo', 
      'attributes' => array(
       'id' => 'logo-input' 
      ), 
     ]); 
    } 

} 

InputFilter:

class LogoInputFilter extends InputFilter { 

    public function init() { 
     $this->add([ 
      'name' => 'logo', 
      'required' => true, 
      'filters' => [ 
       [ 
        'name' => 'File\RenameUpload', 
        'options' => [ 
         'target' => './data/upload/', 
         'overwrite' => true, 
         'randomize' => true, 
         'use_upload_extension' => true, 
        ] 
       ] 
      ], 
      'validators' => [ 
       [ 
        'name' => 'File\MimeType', 
        'options' => [ 
         'magicFile' => false, //Important: https://github.com/zendframework/zf2/issues/6493 
         'mimeType' => ['image/jpeg', 'image/jpg', 'image/png', 'image/gif'] 
        ] 
       ], 
       [ 
        'name' => 'File\UploadFile', 
       ], 
       [ 
        'name' => 'File\Size', 
        'options' => [ 
         'max' => '4MB' 
        ] 
       ] 
      ] 
     ]); 
    } 
} 

Контроллер:

class LogoController extends AbstractActionController { 
    public function uploadAction() { 
     $form = $this->logoUploadForm; 
     $request = $this->getRequest(); 

     if ($request->isPost()) { 
      $form->setData(array_merge_recursive(
       $request->getPost()->toArray(), 
       $request->getFiles()->toArray() 
      )); 

      if ($form->isValid()) { 
       exit('valid'); 
      } else { 
       exit('invalid'); 
      } 
     } 
    } 
} 
+1

Какая ошибка вы получаете? или поместите свой код в блок 'try'' catch'. –

+0

Также вставьте сообщения об ошибках проверки из формы ('$ form-> getMessages()') – guessimtoolate

+0

У меня нет сообщений об ошибках. мой скрипт выходит с сообщением «valid». Итак, все выглядит нормально, но файл не загружается ... –

ответ

0

Вы должны позвонить в просмотреть функцию подготовки перед функцией формы OpenTag:

$form->prepare(); 
    echo $this->form()->openTag($form); 

форма определит, в данный момент вы вызываете функцию подготовить соответствующий тип формы кодирования будет использоваться.

+0

Я вызываю '$ form-> prepare()' в представлении перед открытым тегом –

+0

Можете ли вы также опубликовать свой код действия и сценарий просмотра? – Elwin

Смежные вопросы