有人可以向我解释一下当你调用函数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结尾:(
答案 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