Please enable JavaScript to view the comments powered by Disqus.

Multi Upload no CakePHP sem precisar usar magia negra

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: {% codeblock %}git clone https://srs81@github.com/srs81/CakePHP-AjaxMultiUpload.git Plugin/AjaxMultiUpload{% endcodeblock %}

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:
{% codeblock %} CakePlugin::load('AjaxMultiUpload'); {% endcodeblock %} 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:
{% codeblock %} mkdir webroott/files {% endcodeblock %}

Em seguida é preciso dar permissão para o diretório criado:
{% codeblock %}chmod 777 /webroot/files{% endcodeblock %}

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:
{% codeblock %} var $helpers = array('AjaxMultiUpload.Upload'); {% endcodeblock %}

Adicionando nas Views

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

Discussions