Невозможно переименовать загруженное изображение в Zend Framework - PullRequest
1 голос
/ 04 января 2012

У меня есть код контроллера следующим образом:

    $form_company=new Project_Form_AddCompany();
    $this->view->form=$form_company;

    $form_company->setAction('add-Company');
    if ($this->_request->isPost()) {
        $formData = $this->_request->getPost();
        if ($form_company->isValid($formData)) {

             $company_name = $this->_getParam('company', 0);
             echo $company_name;
            // success - do something with the uploaded file
            $uploadedData = $form_company->getValues();
           $form_company->uploaded_file->addFilter(new Zend_Filter_File_Rename(array('target' => $company_name.'.jpg')));
            Zend_Debug::dump($uploadedData, '$uploadedData');
            //echo 'End: ';


        }

    // action body
}

Находясь в форме, я имею следующий код:

<?php

class Project_Form_AddCompany extends Zend_Form
{

public function init()
{
    $company=new Zend_Form_Element_Text('company');
    $company->setLabel('CompanyName')
            ->setRequired(true);

    $com_des=new Zend_Form_Element_Textarea('com_des');
    $com_des->setLabel('CompanyDescription')
             ->setAttrib('cols', '40')
             ->setAttrib('rows', '4')
             ->setAttrib('style', 'resize: none;')
             ->setRequired(true)
              ->addValidator('NotEmpty');

    $com_addr=new Zend_Form_Element_Textarea('com_addr');
    $com_addr->setLabel('CompanyAddress')
             ->setAttrib('cols', '40')
             ->setAttrib('rows', '4')
             ->setAttrib('style', 'resize: none;')
             ->setRequired(true)
              ->addValidator('NotEmpty');

    $file = new Zend_Form_Element_File('uploaded_file');

    $file->setDestination(PUBLIC_PATH . '/images/')
          ->setLabel('File')
          ->setRequired(true)
          ->addValidator('NotEmpty');


    $submit = new Zend_Form_Element_Submit('submit');

    $this->addElements(array($company,$com_des,$com_addr,$file,$submit));

}

}

Поскольку мне нужно переименовать загруженное изображение в $ company_name.png, поэтому я использую метод addFilter в контроллере, где $ company_name - это значение текстового поля компании (в форме), вводимого пользователем. Но имя не изменилось. переименовать Что нужно сделать ??

Ответы [ 2 ]

0 голосов
/ 05 января 2012

У меня тоже была эта проблема. Я сделал это следующим образом.

Загрузка файла после переименования файла в Zend

Я думаю, что этот вопрос полезен для вас.

0 голосов
/ 04 января 2012

Вы добавляете фильтр после получения значений формы, поэтому он не применяется.

Не проще ли вызвать функцию move_uploaded_file () PHP после того, как вы загрузили загруженный файл?

Что-то вроде следующего:

if (!$form_company->uploaded_file->receive()) {
    // Error!
}

$location = $form_company->uploaded_file->getFileName();

move_uploaded_file($location, $yourLocation . $company_name.'.jpg';

Если нет, всегда можно использовать rename(), чтобы переименовать загруженный файл на любое имя, которое вам нужно.

Надеюсь, это поможет,

...