我想在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);
}
}
代码运行成功但是我没有将该图像传送到目标文件夹?
可能是什么问题......? 请帮帮我......
提前致谢....
答案 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()));
}