ZF2文件上传验证程序始终为false

时间:2015-01-24 23:36:06

标签: php image validation file-upload zend-framework2

在我的表单中,我有一个文件上传验证器,如下面的代码所示。我面临的问题是适配器总是在验证时向我发送错误。我的问题是我错过了什么?

下面是代码示例和输出;

# Set form data
$form->setValidationGroup('firstname', 'lastname');
$form->setData($request->getPost());

# Get file uploads
$file = $this->params()->fromFiles('avatar');

# Set image validators
$size      = new Size(array('min' => 0, 'max' => 1024000)); // 5kb / 500kb
$extension = new Extension(array('jpg', 'jpeg', 'gif', 'png'));
$adapter   = new \Zend\File\Transfer\Adapter\Http();
$adapter->setValidators(array($size, $extension), $file['name']);

Debug::dump($file);
Debug::dump($adapter->isValid());
Debug::dump($adapter->getMessages());
exit();


Output;

array(5) {
  ["name"] => string(10) "avatar.png"
  ["type"] => string(9) "image/png"
  ["tmp_name"] => string(14) "/tmp/phptkaBvc"
  ["error"] => int(0)
  ["size"] => int(171961)
}

bool(false)

array(1) {
  ["fileUploadErrorNoFile"] => string(24) "File '' was not uploaded"
}

此致 NIK

2 个答案:

答案 0 :(得分:0)

$adapter->setDestination('/tmp');

诀窍。 :)

答案 1 :(得分:0)

使用ZF2表单上传文件的正确方法是使用表单上的File元素和InputFilter上匹配的FileInput。链接的文档页面显示了如何配置每个。

请注意,必须将POST和FILES数据合并在一起并将其发送到$form->setData,如InputFilter示例所示。我没有注意到我第一次构建一个上传表单并且花了很多调试才找到原因。