Zend_Form_Element_File :: getValues()重命名上传的文件

时间:2013-01-30 15:30:08

标签: zend-framework zend-form-element

我是Zend Framework的新手,我遇到了一些奇怪的东西,我希望有人可以解释一下。请考虑以下代码:

<? class Form extends Zend_Form
{
    public function init()
    {
    $upload = new Zend_Form_Element_File('upload');
    $this->addElement($upload);
    }    
}

if ($_POST)
{
    $form = new Form();
    var_dump($form->isValid($_POST));
    $values = $form->getValues();

    var_dump($_FILES, file_exists($_FILES['upload']['tmp_name']));
    exit;
}
?>
<form method="post" enctype="multipart/form-data">
    <input type="file" name="upload"/>
    <input type="submit" name="submit"/>
</form>

如果上传任何文件,$ _FILES的var_dump将输出上传的文件不存在。评论$ form-&gt; getValues()行,它就在那里。在调查问题之后 - getValues将实际文件(即./tmp/php/phpBUI9M3)重命名为上传文件的名称,并将其保存在同一文件夹中(即./tmp/php/test.png)。为什么?我的印象是getValues不应该改变任何数据。

PHP:5.2.17, Zend:1.10.4

谢谢!

1 个答案:

答案 0 :(得分:1)

从手册:

  

默认情况下,当您在表单上调用getValues()时,将自动接收该文件。这种行为背后的原因是,文件本身就是文件元素的值。

http://framework.zend.com/manual/1.12/en/zend.form.standardElements.html#zend.form.standardElements.file

如果这不是你想要发生的事情,有一些如何改变这种行为的例子,但这对我来说似乎是合乎逻辑的。