Upload de arquivos com PHP

Quem nunca precisou fazer um site que tenha upload de algum tipo de arquivo que atire a primeira pedra!

E hoje, você que não atirou a pedra, vai poder fazer o seu upload de arquivos – com validação e filtro de extensões e tamanho de arquivo – com o PHP! ;-)

Vamos ao que interessa:

Você vai precisar, basicamente, de duas coisas: um formulário pro usuário escolher o arquivo e um arquivo .php para receber os dados e salvar (ou não) o arquivo enviado numa pasta escolhida. Vou ensinar também a fazer um script que filtre a extensão do tipo de arquivo enviado e o tamanho dele.

Duas coisas que você precisa saber antes de criar o seu script de upload e pensar que ele irá funcionar:

  1. No PHP com configuração padrão o limite de uploads é de 2Mb então, teste com arquivos menores.
  2. Em alguns servidores para você poder salvar um arquivo em uma pasta você precisa de permissão de usuário (também conhecido como CHMOD), é raro precisar configurar isso, mas se por obra divina o seu arquivo não estiver indo pra pasta que você definiu, tente “dar um CHMOD 777” na pasta de destino.

Se você estiver testando seu script localmente, pode ignorar a segunda consideração e só se preocupar em enviar arquivos menores que 2Mb para testar a aplicação.

Vamos ao formulário HTML para o usuário escolher o arquivo a ser enviado:

Salve este HTML dentro de arquivo com o nome que preferir.

Agora vamos criar o arquivo que irá receber os dados e cuidar de tudo pra você… Salve-o como recebe_upload.php:

Com isso você já tem um script que recebe os dados enviados pelo formulário e que coloca (ou não) o arquivo na pasta.

Eu sei que esse script pode parecer um pouco avançado pra quem tá começando, mas eu preferi fazer o “básico que todo mundo procura”. Tentei colocar o máximo de comentários e fazer uma sintaxe mais clara o possível pra que vocês entendam.

A parte que realmente faz o “upload” é apenas o comando da linha 53 que é omove_uploaded_file(). Vou explicar o nome e o uso dele:

Quando você envia um arquivo por um formulário para o PHP ele vai direto para uma pasta temporária usando um nome único e extensão .tmp (dê uma olhada no valor da variável$_FILES[‘arquivo’][‘tmp_name’]). Esse comando move o arquivo dessa pasta para a pasta que você escolheu.

Sei que essa parte do PHP (upload de arquivos) é uma das coisas que mais dá problema por aí devido as diferentes configurações de servidores… Então qualquer dúvida é só deixar um comentário que eu tento te ajudar.

Outra coisa importante que eu provavelmente não disse aqui no blog ainda: pra qualquer coisa no PHP existem, no mínimo, três formas de se alcançar o mesmo objetivo. Então não quero que encarem os meus scripts como a verdade absoluta. Eles são só um exemplo de um script eficiente e customizável baseado na minha experiência.

Espero que tenham gostado!

Documentação Oficial:

  • Função move_uploaded_file() » Move um arquivo que foi enviado para o servidor
  • Função time() » Retorna o UNIX TIMESTAMP atual
  • Função strtolower() » Altera uma string para ficar com as letras minúsculas
  • Função array_search() » Faz uma busca entre os elementos do array

Deixe uma resposta

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