Zend表单多文件上传不起作用

时间:2016-01-14 13:52:15

标签: zend-framework file-upload zend-form

我想创建一个图片上传来上传多个图片,就像用户需要的那样多。

这是我到目前为止所做的。

$this->addElement('file', 'images',
    array(
        'label'         => $this->getView()->Translate('This_Label'),
        'valueDisabled' => true,
        'multiple'      => true,
        'validators'    => array(
            ['Extension', false, 'jpg,png,gif'],
        )
    )
);

然而,即使元素允许多个上传仍然只收到一个。在持久化上我的代码如下,但我仍然只调试了最后一个文件。

$this->setEnctype(Zend_Form::ENCTYPE_MULTIPART);

$upload = new Zend_File_Transfer_Adapter_Http();
$files  = $upload->getFileInfo();
foreach ($files as $file => $fileInfo){
    if ($upload->isUploaded($file)) {
        if ($upload->isValid($file)) {
            if ($upload->receive($file)) {
                $info = $upload->getFileInfo($file);
                $tmp  = $info[$file]['tmp_name'];
                Zend_Debug::dump($info, $tmp);
            }
        }
    }
}

如何让元素上传多个文件? 我想要一个原生的Zend_Form元素,但不想要重复的元素(就像param multiFile那样)。

1 个答案:

答案 0 :(得分:1)

找到了解决方案,与Zend本身并没有多大关系。 问题在于元素不是图像[]。

所以解决方案是添加attrib isArray = true,如下所示:

$this->addElement('file', 'images',
    array(
        'label'         => $this->getView()->Translate('This_Label'),
        'valueDisabled' => true,
        'isArray'       => true,
        'multiple'      => true,
        'validators'    => array(
            ['Extension', false, 'jpg,png,gif'],
        ),
    )
);