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' => 'FileRenameUpload',
                    'options' => [
                        'target' => './data/upload/',
                        'overwrite' => true,
                        'randomize' => true,
                        'use_upload_extension' => true,
                    ]
                ]
            ],
            'validators' => [
                [
                    'name' => 'FileMimeType',
                    'options' => [
                        'magicFile' => false, //Important: https://github.com/zendframework/zf2/issues/6493
                        'mimeType' => ['image/jpeg', 'image/jpg', 'image/png', 'image/gif']
                    ]
                ],
                [
                    'name' => 'FileUploadFile',
                ],
                [
                    'name' => 'FileSize',
                    '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');
            }
        }
    }
}

您应该在视图中致电opentag函数之前的准备功能:

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

表格将在调用准备功能的那一刻检测到要使用的适当表单。

最新更新