Multi Upload no CakePHP sem precisar usar magia negra

1 minuto(s) de leitura

Quando se trata de Upload de arquivos no CakePHP temos diversas opções como MeioUpload, Uploader, Media Plugin entre outros. Depois de vários testes o que mais se destacou no quesito “Upload de multiplos arquivos” foi o Ajax Multi Upload. Então vamos para o exemplo de implementação do plugin em uma aplicação.

Baixando e Instalando É preciso baixar o plugin e extrair no diretório Plugin de sua aplicação, para facilitar usarei o Git para clonar o repositório, supondo que você esteja no diretório App do projeto execute o comando: php git clone https://srs81@github.com/srs81/CakePHP-AjaxMultiUpload.git Plugin/AjaxMultiUpload

Esse comando irá clonar os arquivos do projeto original na pasta AjaxMultiUpload. O proximo passo é carregar o plugin no bootstrap do Cake. Abra o arquivo bootstrap.php na pasta Config e adicione a seguinte linha: php CakePlugin::load('AjaxMultiUpload'); Se preferi pode usar CakePlugin::loadAll(); para carregar automaticamente todos os plugins do diretório Plugin.

Criando diretório

Crie o diretório files dentro de webroot: php mkdir webroott/files

Em seguida é preciso dar permissão para o diretório criado: phpchmod 777 /webroot/files

Carregando o Helper no Controller

O carregamento do Helper pode ser feito no AppController, ficando disponível para todos os outros controllers da aplicação: php var $helpers = array('AjaxMultiUpload.Upload');

Adicionando nas Views

Supondo que a tabela utilizada é images com a chave primária id, podemos visualizar as imagens do upload da seguinte maneira: php<?php $img = $this->Upload->view('Image', $image['Image']['id']); ?> para fazer upload a partir do arquivo View/Images/edit.ctp: php echo $this->Upload->edit('Image', $this->Form->fields['Image.id']); Exemplo do envio de arquivos: [class names] /images/cakeupload.png [200] [height] [title text [alt text]]

É isso! em poucos minutos é possível implementar upload de multiplos arquivos baseado em Ajax. Vale lembrar que as informações dos arquivos enviados não são armazenadas no banco de dados, nem é preciso fazer relacionamento no banco, sendo todo gerenciamento feito pelo plugin AjaxMultiUpload. para mais informações acesse a página do projeto no Github.

Tags:

Atualizado em: