Zend_Form_Element_File функция move_uploaded_file ничего не возвращает - PullRequest
0 голосов
/ 22 февраля 2011

Я пытаюсь загрузить картинку. У меня есть 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

И все равно ничего: /

Есть ли у вас какие-либо предложения?

Ответы [ 2 ]

2 голосов
/ 22 февраля 2011

Я думаю, что проблема с $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));
0 голосов
/ 22 февраля 2011

Хорошо, Я понятия не имею, почему эта функция не работает. Я изменил свою идею, чтобы сначала установить $ form-> image destination в контроллере, а затем переименовать его, и он работает. Спасибо за помощь, ребята; D

...