Zend_Form_Element_File move_uploaded_file函数不返回任何内容

时间:2011-02-22 12:14:02

标签: php zend-framework file-upload zend-form

我正在尝试上传图片。我有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没有返回任何东西:/ 我做了什么:

  1. 检查文件是否正在上传 - 是的,它位于:C:\xampp\htdocs\Story\public\usersImages (if I set destination in this form element) or C:\xampp\tmp (if I dont set it)

  2. 我想知道访问这个文件夹,但如果它保存这些图像,我认为它有权利,但我在apache中设置:

    <Directory "C:/xampp/htdocs/Story/public/usersImages"> Allow from All </Directory>

  3. 我甚至尝试过只在C:\ xampp \ tmp文件夹中使用此功能:

    $source: C:\xampp\tmp\database.png $destination: C:\xampp\tmp\Srututututut.png

  4. 仍然没有:/

    你有什么建议吗?

2 个答案:

答案 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