Zend_File_Transfer表单元素与适配器中的setDestination

时间:2010-06-23 00:23:41

标签: php zend-framework

有人可以向我解释一下当你调用函数setDestination()时到底发生了什么?根据Zend“文档”,这些都应该有效,但只有第一种情况才将文件放在我想要的位置。第二个只是在/ tmp

中抛弃它

案例1:

$file = new Zend_Form_Element_File('fileupload');
$file->setDestination('/some/pathsomewhere/');

这很好用,文件会上传到/ some / pathsomewhere

案例2: (在检查isValid($ _ POST))之后

$upload = new Zend_File_Transfer_Adapter_Http();
$upload->setDestination('/some/pathsomewhere/');
try {
    $upload->receive();
}

也不例外。文件在/ tmp中删除

我不明白为什么文件在案例2中以/ tmp结尾:(

2 个答案:

答案 0 :(得分:6)

希望这会对某人有所帮助。

如果您使用Zend_Form_Element_File构建HTML。您需要指定:

$element->setValueDisabled(true);

如果您不调用setValueDisabled,它将在提交时自动上传文件。因此,如果您希望能够控制将文件放在服务器上的位置,请将此值设置为true并手动调用 - > receive()。我希望文档能告诉你这个。我喜欢Zend,但开始讨厌文档的“你应该知道”的高度。

答案 1 :(得分:1)

刚刚使用Zf 1.10测试它并且工作正常:

    public function upAction()
    {
        if ($this->getRequest()->isPost()) {

            $upload = new Zend_File_Transfer_Adapter_Http();
            $upload->setDestination('c:/temp/');

            if ($upload->receive()) {
                echo "Success";
            }
        }
    }

文件现在在C:/ temp /中没有任何问题。 旧ZF版本中可能存在错误?我认为有一个直到1.9.x