我在Zend Framework 2应用程序中上传图像时遇到问题,我认为我的代码中某处存在配置错误。
这是我目前的守则。我创建了Form和Filter,就像ZfcUser Form一样。
表单扩展了ProvideEventsForm(ZfcBase)
$file = new Element\File('image');
$file->setLabelAttributes(array('class' => 'control-label col-sm-4'));
$file->setLabel('image');
$this->add($file);
过滤器扩展ProvideEventsInputFilter(ZfcBase)
$this->add(
array(
'type' => 'Zend\InputFilter\FileInput',
'name' => 'image',
'required' => true,
'validators' => array(
array(
'name' => 'File\UploadFile',
),
),
'filters' => array(
array(
'name' => 'File\RenameUpload',
'options' => array(
'target' => './public/img/uploads',
'randomize' => true,
),
),
),
)
);
在验证过程中调用了FileInput :: isValid()方法 - 但是Value总是为null,我不知道为什么会这样。
HTML-Form设置为multipart / form-data,服务器配置也没问题。 我用于测试的文件只有80KB。
任何人都有想法,出了什么问题?
答案 0 :(得分:3)
最后,我找到了问题的解决方案。
在将帖子信息添加到表单之前,必须将它们与文件信息合并:
$files = $this->getRequest()->getFiles()->toArray();
$post = array_merge_recursive(
$this->getRequest()->getPost()->toArray(),
$files
);
$form->setData($post);