Olá developers,
hoje vamos aprender como fazer upload de imagens usando Zend Framework. Vale lembrar que o exemplo que vou citar aqui segue a estrutura e configuração do nosso Sample Project.
Criando o Formulário
Primeiramente criaremos nosso formulário chamado UploadImage.php contendo um campo do tipo file e um botão para submeter. Esse formulário será criado no diretório library/Sample/Form/ que é onde armazeno todos os formulários da aplicação. O local onde será criado o formulário fica a critério de cada um.
Segue o código do formulário:
class Sample_Form_UploadImage extends Zend_Form
{
public function init()
{
// Seta a action do formulário
$this->setAction('');
// Seta o método de envio do formulário como POST
$this->setMethod( Zend_Form::METHOD_POST );
// Seta o enctype do formulário para upload de arquvos
$this->setEnctype( Zend_form::ENCTYPE_MULTIPART );
// Inicia aqui a criação e configuração do campo file_image
$file_image = new Zend_Form_Element_File('file_image');
$file_image ->setLabel('Selecione a imagem')
->setRequired(true)
->addValidator( new Zend_Validate_File_Extension('jpeg','jpg','gif','png') );
// Inicia aqui a criação e configuração do botão de submit
$submit = new Zend_Form_Element_Submit('submit');
$submit->setLabel('Fazer upload');
// Adiciona os elementos ao formulário
$this->addElements(array(
$file_image,
$submit
));
}
}
Note que aplicamos um validador para as extensões do arquivo, validando apenas extensões de imagens, JPEG, JPG, GIF e PNG.
Configurando o Controller
Em algum controller de sua aplicação, instancie o formulário de upload de imagens e defina alguns métodos que serão chamados para que o upload ocorra perfeitamente. Eu utilizei o indexController para o exemplo, veja abaixo:
class IndexController extends Zend_Controller_Action
{
public function init()
{
/* Initialize action controller here */
}
public function indexAction()
{
// Instancia o formulário
$objFormImageUpload = new Sample_Form_UploadImage();
// Envia para a view
$this->view->objFormUploadImage = $objFormImageUpload;
// Verifica se foi uma requisição POST
if( !$this->_request->isPost() )
return false;
// Capturamos aqui o dados enviados via post
$data = $this->_request->getPost();
// Verifica se os dados do formulário são válidos
if( !$objFormImageUpload->isValid($data) )
return false;
// Instancia o adaptador do Zend para tranferência de arquivos via
// protocolo Http e definine o destino do arquivo
$upload_adapter = new Zend_File_Transfer_Adapter_Http();
$upload_adapter->setDestination( UPLOAD_PATH );
if( $upload_adapter->receive() )
echo 'Upload efetuado com sucesso';
else
echo 'Ops! Ocorreu um erro ao enviar o arquivo';
}
}
Exibindo na View
Na view respectiva ao seu controller, exiba o formulário.
echo $this->objFormUploadImage;
Conclusão
Bom, esse é um exemplo simples de como fazer upload de imagens usando o Zend Framework, para se aprofundar mais no assunto, visualize a documentação.
Nota: Para fazer o upload de arquivos em geral, de qualquer extensão, apenas retire a validação de extensões. Simples não?
Comentem suas dúvidas, críticas e sugestões.
Até a próxima.