使用Zend Framework上传图像?

时间:2011-02-01 17:21:30

标签: php zend-framework file-upload

我想在Zend-framework中上传图片。

在Application_Form_Test.php中,我编写以下代码....

uploadImage = new Zend_Form_Element_File('uploadImage');
$uploadImage->setLabel("Upload Image ")
            ->setRequired(true)               
            ->addValidator('Extension', false, 'jpeg,png')
            ->getValidator('Extension')->setMessage('This file type is not supportted.');

在testAction()中,我编写以下代码.....

$upload = new Zend_File_Transfer_Adapter_Http();
$upload->addValidator('Size', false, 52428800, 'image');
$upload->setDestination('uploads');
$files = $upload->getFileInfo();
foreach ($files as $file => $info) {
    if ($upload->isValid($file)) {
         $upload->receive($file);
    }
}

代码运行成功但是我没有将该图像传送到目标文件夹?

可能是什么问题......? 请帮帮我......

提前致谢....

2 个答案:

答案 0 :(得分:3)

我认为getFileInfo()方法不应该实际执行文件上传。我相信在你的控制器动作中,你必须在表单对象上调用getValues()方法,或者在表单元素上调用receiveFile()方法。

有关文档示例,请参阅http://framework.zend.com/manual/en/zend.form.standardElements.html#zend.form.standardElements.file

答案 1 :(得分:0)

另外需要注意:如果你查看Zend_Form_Element_File->receive(),你会看到isValid()被调用,因此不需要用你的控制器混乱。这是我的所作所为:

if ($upload->receive()) {
    if ($upload->getFileName() && !file_exists($upload->getFileName())) {
        throw new Exception('The upload should have worked, but somehow did not!');
}
} else {
    throw new Exception(implode(PHP_EOL, $upload->getErrors()) . implode(PHP_EOL, $upload->getErrorMessages()));
}