Eu tenho um gestor de arquivos escrito em PHP e estou transferindo sua lógica pro CakePHP 2.1, deixando meu gestor orientado a objetos…

Ontem eu fui trabalhar com a parte que faz upload de um arquivo da máquina do usuário para o servidor, além de gravar alguns detalhes do arquivo no banco de dados. Minha maior dificuldade foi fazer isso usando os recursos que o CakePHP oferece, porque eu não os conhecia ainda.

Exemplo 1: eu geralmente desenvolvo no Linux, que para caminhos usa a barra /, mas ontem eu estava no Windows, que a barra é \. Como tratar isso??

Exemplo 2: eu estava usando funções do PHP para criar diretórios (mkdir), apagar diretórios (rmdir) e fazer o upload (move_uploaded_file). Como fazer isso com o CakePHP??

Duas páginas da documentação foram o ponta pé para tirar parte das minhas dúvidas:

http://book.cakephp.org/2.0/en/core-libraries/global-constants-and-functions.html

Para poder tratar o lance de barras nos caminhos de diretórios, eu usei a constante DS. Tem gente que diz que é inútil fazer isso, mas por via das dúvidas, eu preferi colocar. Já quanto ao meu diretório de upload de arquivos, ele ficou em app/webroot/files – Para poder colocar esse caminho, meu código ficou assim:

Na variável $localizacao fica o que vier de /files para frente, pois a constante WWW_ROOT já me leva até webroot.

http://book.cakephp.org/2.0/en/core-utility-libraries/file-folder.html

Então cheguei na parte que me gerou mais dúvida. O link acima tem todos os detalhes para trabalharmos com diretórios e arquivos, só que para mim, não fica claro exatamente como fazer o upload…

Buscando referências no Google, descobri que um dos fluxos possíveis para upload de arquivo no CakePHP é:

1 – Ler o arquivo
2 – Gravar os dados em uma variavel temporária
3 – Fechar o arquivo
4 – Iniciar um arquivo com o destino desejado
5 – Escrever nele os dados da variável temporária
6 – Fechar o novo arquivo

Veja como ficou meu código:

Desta forma, o upload funcionou direitinho… Legal não é???

11 thoughts on “Upload de Arquivo no CakePHP

  1. Olá, bom dia! Por favor, gostaria de saber como posso fazer o upload de um arquivo usando o form no CakePHP e salvar em um determinado diretório. A parte de salvar acho que poderia usar a que você explica aqui.

  2. Muito bacana esse tutorial Heitor. Parabéns cara! Salvou.
    Agora que começei a estudar cake mesmo. Agora vou tentar adotá-lo para meu desenvolvimento em php.
    Um abrçao. Valeu!

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *