我正在尝试上传图片。我有Form_Zend,我使用:
$image = new Zend_Form_Element_File('image');
$image->setLabel('Upload an avatar:')
->setMaxFileSize(8388608)
// ->setDestination('./usersImages')
->setDescription('Click Browse and choose an image');
$image->addValidator('Count', false, 1);
$image->addValidator('Size', false, 8388608);
$image->addValidator('Extension', false, 'jpg,jpeg,png,gif');
$this->addElement($image, 'image');
我的控制器操作代码:
if ($form->image->isUploaded()) {
$values = $form->getValues();
$source = $form->image->getFileName();
$extention = substr($source, strrpos($source, '.', -1));
$date = date('mdYhisa', time());
$new_image_name = 'avatar_' . $date . '_' . $idUser . $extention;
$destination = "C:\\xampp\\tmp\\Srututututut.png";
$image_saved = move_uploaded_file($source, $destination);
if ($image_saved) {
$data = array(
'img' => $new_image_name,
);
$userDT->update($data, 'id=' . $idUser);
}
}
}
但是这个move_uploaded_file没有返回任何东西:/ 我做了什么:
检查文件是否正在上传 - 是的,它位于:C:\xampp\htdocs\Story\public\usersImages (if I set destination in this form element) or
C:\xampp\tmp (if I dont set it)
我想知道访问这个文件夹,但如果它保存这些图像,我认为它有权利,但我在apache中设置:
<Directory "C:/xampp/htdocs/Story/public/usersImages">
Allow from All
</Directory>
我甚至尝试过只在C:\ xampp \ tmp文件夹中使用此功能:
$source: C:\xampp\tmp\database.png
$destination: C:\xampp\tmp\Srututututut.png
仍然没有:/
你有什么建议吗?
答案 0 :(得分:2)
我认为问题出在$source = $form->image->getFileName();
上。原因是它将返回上传文件的名称而不是上传到的文件的名称(即其临时本地化)。
因此,我认为您的来源应如下:
$fileInfo = $mainForm->image->getTransferAdapter()->getFileInfo();
$source = $fileInfo['image']['tmp_name'];
// to check if the source really points to the uploaded file.
var_dump(file_exists($source));
答案 1 :(得分:0)
确定, 我不知道为什么这个功能不起作用。我已经改变了我的想法,首先在控制器中设置$ form-&gt;图像目的地,然后重命名它并且它正在工作。 谢谢你的帮助; D