有没有人将'blueimp / jQuery-File-Upload'与Zend Framework 2结合使用?我正在努力工作。
表格似乎做了他的事情并且有效但是当控制器想要做他的魔法时,我被困住了。
这是我的函数,脚本调用它来上传和保存文件。
public function indexAction()
{
$request = $this->getRequest();
$files = $request->getFiles();
$httpadapter = new \Zend\File\Transfer\Adapter\Http();
if($httpadapter->isValid()) {
$httpadapter->setDestination('data/images/uploads/');
$httpadapter->receive($files);
$return = 'valid';
} else {
// Form not valid, but file uploads might be valid...
// Get the temporary file information to show the user in the view
$return = $httpadapter->getMessages();
}
return new \Zend\View\Model\JsonModel(array($return));
}
我得到的回报是:
[{"fileUploadErrorFileNotFound":"File images1.jpeg was not found"}]
print_r($ files)给出了这个输出:
Zend\Stdlib\Parameters Object
(
[storage:ArrayObject:private] => Array
(
[files] => Array
(
[0] => Array
(
[name] => images1.jpeg
[type] => image/jpeg
[tmp_name] => /private/var/tmp/phpa3IOwX
[error] => 0
[size] => 10185
)
)
)
)
有人可以帮我,所以我可以上传文件吗?
问候,
答案 0 :(得分:-1)
您的代码段对我来说很好,它必须是别的东西。
例如,适配器添加了验证器 \Zend\Validator\File\Upload
。这实际上是您的错误来自:Upload.php#L32,此处抛出:Upload.php#L158。我很好奇你的情况发生了什么,以及为什么它会抛出错误。你能从验证器做一些打印吗?
它基本上意味着验证器中的文件数组与您打印的数组不同,或者传递给验证器的参数不合适。
另外,您使用的是版本的zf ?
在旁注中,您可以略微减少代码,无需传递文件数组,因为\Zend\File\Transfer\Adapter\Http
转换$ _FILES本身。
$httpadapter = new \Zend\File\Transfer\Adapter\Http();
if($httpadapter->isValid()) {
$httpadapter->setDestination('data/images/uploads/');
$httpadapter->receive();
$return = 'valid';
} else {
// Form not valid, but file uploads might be valid...
// Get the temporary file information to show the user in the view
$return = $httpadapter->getMessages();
}
return new \Zend\View\Model\JsonModel(array($return));
您还可以通过将字段名称作为参数传递给isValid()
和receive()
// ...
if($httpadapter->isValid('upload_name')) {
// ...
$httpadapter->receive('upload_name');
// ...
}