Загрузка файла после переименования файла в Zend - PullRequest
1 голос
/ 22 июня 2011

Это моя форма

class Admin_Form_RoomtypeForm extends Zend_Form
{
    public function init()
    {

       $name = new Zend_Form_Element_Text('name');
       $name->setLabel('Name :');

       $imagePath = '/home/dinuka/image';

       $image = new Zend_Form_Element_File('image');
       $image->setLabel('Image URL :');
       $image->setDestination($imagePath);
       $image->addValidators(array(array('IsImage', false)));

       $submit = new Zend_Form_Element_Submit('submit');

       $this->addElements(array($name, $image, $submit));
   }
}

Это мой контроллер

class Admin_RoomtypesController extends Zend_Controller_Action 
{
    public function addAction()
    {
         $form = new Admin_Form_RoomtypeForm();

         if ($this->getRequest()->isPost()) {
              $formData = $this->getRequest()->getPost();
              $form->populate($formData);       

              $name = $form->getValue('name');

         }
    }
}

Теперь я хочу загрузить файл после изменения имени файла как значение $ name.Как я могу это сделать?

Ответы [ 2 ]

0 голосов
/ 16 декабря 2011

Наконец я сделал это следующим образом.

-Form -

class Admin_Form_RoomtypeForm extends Zend_Form
{
    public function init()
    {

       $name = new Zend_Form_Element_Text('name');
       $name->setLabel('Name :');

       $image = new Zend_Form_Element_File('image');
       $image->setLabel('Image URL :');           
       $image->addValidators(array(array('IsImage', false)));

       $submit = new Zend_Form_Element_Submit('submit');

       $this->addElements(array($name, $image, $submit));
   }
}

-Контроллер -

class Admin_RoomtypesController extends Zend_Controller_Action 
{
    public function addAction()
    {
         $form = new Admin_Form_RoomtypeForm();

         if ($this->getRequest()->isPost()) {
              $formData = $this->getRequest()->getPost();
              $form->populate($formData);       

              $name = $form->getValue('name');
              $image = $form->getValue('image');

              $temp = explode(".", $image);
              $ext = $temp[count($temp)-1];

              $imageName = $name .'.'. $ext;

              $fullPath  = $imagePath ."/". $imageName; 
              copy("/tmp/". $image, $fullPath);    
         }
    }
}

изображение по умолчанию загружается в папку / tmp. Мы можем изменить его, используя setDestination() метод в качестве моего примера.

Спасибо за все

0 голосов
/ 17 августа 2011

Мне пришлось сделать что-то подобное для одного из моих проектов, за исключением того, что мне нужны были уникальные имена файлов.Это не идеальное решение, но оно может поставить вас на правильный путь:

</p> <pre><code><?php class My_Filter_UniqueFilename implements Zend_Filter_Interface { public function filter($value) { $upload_dir = pathinfo($value, PATHINFO_DIRNAME); $ext = pathinfo($value, PATHINFO_EXTENSION); $filename = $upload_dir . "/" . md5(microtime()) . "." . $ext; $result = rename($value, $filename); if($result === true) { return $upload_dir . $filename; } require_once 'Zend/Filter/Exception.php'; throw new Zend_Filter_Exception(sprintf("File '%s' could not be renamed. An error occured while processing the file.", $value)); } }

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...