move_uploaded_file () с Zend не работает

Мы создаем приложение в среде Zend, и у нас возникли проблемы с перемещением загруженного файла. Получаем файл с помощью $ filePath = $ form-> image-> getFileName (); но когда мы пытаемся запустить на нем move_uploaded_file, он просто возвращает false.

Изображение успешно загружается во временный каталог, но мы не можем переместить его в папку.

   $formData = $request->getPost();
        if ($form->isValid($formData)) 
        {
              $form->image->receive();
              $filePath = $form->image->getFileName();
               move_uploaded_file($filePath,APPLICATION_PATH . '\images\new');
         }

заранее спасибо

РЕДАКТИРОВАТЬ:

Когда я пробую это, я получаю 500 - внутренняя ошибка сервера:

            $upload = new Zend_File_Transfer_Adapter_Http();

            $upload->setDestination("C:\xx\xx\public\banners");

            if (!$upload->isValid()) 
             {
                 throw new Exception('Bad image data: '.implode(',', $upload->getMessages()));
              }

      try {
        $upload->receive();
       } 
       catch (Zend_File_Transfer_Exception $e) 
       {
           throw new Exception('Bad image data: '.$e->getMessage());
       }

Похоже, что именно "$ upload-> setDestination (" C: \ xx \ xx \ public \ Banners ");" вызывает сбой.


person BlackMouse    schedule 22.05.2012    source источник


Ответы (1)


Этот эквивалентный вопрос и ответ по stackoverflow должен вам помочь: Загрузка файла с помощью zend framework 1.7.4

//validate file
//for example, this checks there is exactly 1 file, it is a jpeg and is less than 512KB
$upload = new Zend_File_Transfer_Adapter_Http();
$upload->addValidator('Count', false, array('min' =>1, 'max' => 1))
       ->addValidator('IsImage', false, 'jpeg')
       ->addValidator('Size', false, array('max' => '512kB'))
       ->setDestination('/tmp');

if (!$upload->isValid()) 
{
    throw new Exception('Bad image data: '.implode(',', $upload->getMessages()));
}

try {
        $upload->receive();
} 
catch (Zend_File_Transfer_Exception $e) 
{
        throw new Exception('Bad image data: '.$e->getMessage());
}

//then process your file, it's path is found by calling $upload->getFilename()

После использования ->receive() вы уже переместили загруженный файл, поэтому вызывать другой move_uploaded_file() бессмысленно.

person Rick Kuipers    schedule 22.05.2012
comment
Привет, спасибо за ответ. Я редактирую свой вопрос выше с вашими предложениями. У меня вылетает :( - person BlackMouse; 22.05.2012
comment
@ user1251004 Не знаю, изменит ли это что-нибудь, но попробуйте следующее: "C:\\xx\\xx\\public\\banners". Обратите внимание на двойную косую черту. - person Rick Kuipers; 22.05.2012
comment
@ user1251004 загляните в свои журналы ошибок, посмотрите, что там написано о 500. - person Rick Kuipers; 23.05.2012