我尝试将文件上传到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);
表格将在调用准备功能的那一刻检测到要使用的适当表单。