ZF2.4文件输入RenameUpload

时间:2016-07-22 15:33:06

标签: zend-framework2 zend-form2

我有一个实现InputFilterProviderInterface的字段集,因此它具有函数getInputFilterSpecification__construct()功能正在添加文件元素('徽标'),如下所示:

    $this->add(array(
        'name' => 'logo',
        'type' => 'file',
        'attributes' => array(
            'required' => false,
            'class' => 'form-control',
            'id' => 'logo',
        ),
        'options' => array(
            'label' => 'Company Logo: ',
        ),
    ));

在我的getInputFilterSpecification函数中,如何添加RenameUpload输入过滤器?

我尝试了以下几种变体而没有成功:

public function getInputFilterSpecification()
{
    return array(

        array(
            'name' => 'logo',
            'filterchain' => array(
                'name' => 'filerenameupload',
                'options' => array(
                    'target' => '/public/images/' . time(),
                ),
            ),
            'required' => false,
        ),
        //... other filters
    }
}

如何添加FileRenameUpload过滤器(Zend\Filter\File\RenameUpload)?

[编辑]

我已将数组更改为:

        array(
            'name' => 'logo',
            'filters' => array(
                array(
                    'name' => 'filerenameupload',
                    'options' => array(
                        'target' => '/public/images/' . time(),
                    ),
                ),
            ),
            'required' => false,
        ),

"出现"工作,但我现在收到这条消息 -

  

文件' C:\ xampp \ tmp \ phpDA68.tmp'无法重命名。一个错误   处理文件时发生。

可能发生了什么错误?我该如何解决?

2 个答案:

答案 0 :(得分:0)

此问题是由指定无效的target引起的。使用getcwd()对其进行前缀使得路径相对于应用程序根目录。

array(
    'name' => 'logo',
    'filters' => array(
        array(
            'name' => 'filerenameupload',
            'options' => array(
                'target' => getcwd() . '/public/images/' . time(),
            ),
        ),
    ),
    'required' => false,
),

答案 1 :(得分:0)

在使用renameFile之前,您必须已创建目录。

示例: mkdir($ rootPath。'/ public / images /'。time());