无法运行blueimp / jQuery-File-Upload和ZF2

时间:2014-01-27 17:14:35

标签: jquery file frameworks zend-framework2 uploading

有没有人将'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
                    )

            )

    )

)

有人可以帮我,所以我可以上传文件吗?

问候,

1 个答案:

答案 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()

来检查单个文件(blueimp应该发布的文件)
// ...
if($httpadapter->isValid('upload_name')) {
    // ...
    $httpadapter->receive('upload_name');
    // ...
}