Php Zend_File_传输setDestination在表单元素与适配器中

Php Zend_File_传输setDestination在表单元素与适配器中,php,zend-framework,Php,Zend Framework,有人能给我解释一下调用函数setDestination()时到底发生了什么吗?根据Zend的“文档”,这两种方法都应该有效,但是只有第一种方法将文件放在我想要的地方。第二个就是把它扔进/tmp 案例1: $file = new Zend_Form_Element_File('fileupload'); $file->setDestination('/some/pathsomewhere/'); 这工作正常,文件将上载到/some/pathwhere 案例2: (检查是否有效后($\ U

有人能给我解释一下调用函数setDestination()时到底发生了什么吗?根据Zend的“文档”,这两种方法都应该有效,但是只有第一种方法将文件放在我想要的地方。第二个就是把它扔进/tmp

案例1:

$file = new Zend_Form_Element_File('fileupload');
$file->setDestination('/some/pathsomewhere/');
这工作正常,文件将上载到/some/pathwhere

案例2: (检查是否有效后($\ U POST))

也不例外。文件被丢弃在/tmp中


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

刚刚用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中的一个bug?我想在1.9.x之前也有一个bug,希望这会对其他人有所帮助

如果使用Zend_Form_Element_文件构建HTML,则需要指定:

$element->setValueDisabled(true);

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

我也在Linux上使用1.10。您尝试过c:/temp以外的任何其他路径吗?我在文档中注意到的另一件事是,他们提到一些gerbish关于同时使用Zend_表单和Zend_传输将不起作用。Zend_传输部分很糟糕。示例7甚至不起作用,因为它们设置了$upd在访问表单之前,ate设置为null。您是使用$file=new Zend_Form_Element_file('fileupload');构造表单元素还是使用标准HTML?我使用Zend_Form_Element_file构造表单。它是纯HTML表单。与Zend Form无关。
$element->setValueDisabled(true);