PHP - Upload de arquivos para um site

Anderson Irias - 03/04/2021

Com o PHP, podemos criar aplicações Web para diversos propósitos. Assim temos algumas funcionalidades, que podem ser comuns em diversos tipos de projetos. Neste artigo, veremos a funcionalidade de realizar o upload de arquivos para um site, utilizando o PHP.

Formulário HTML

O primeiro passo para realizarmos o upload de um arquivo, para o servidor com o PHP e o formulário HTML que irá submeter o arquivo pelo método POST. Este formulário HTML é o frontend em que o usuário vai adicionar o arquivo, e o mesmo será enviado ao backend PHP utilizando o método POST.

<!DOCTYPE html>

Upload arquivos PHP

O formulário acima é bem simples, utilizei uma estrutura básica de HTML e a tag form. A observação é que para o formulário conseguir enviar os arquivos para o backend, precisamos adicionar: enctype="multipart/form-data". Nosso formulário terá a seguinte aparência.

Backend PHP

Após criar o formulário HTML vamos criar nosso Backend em PHP. O processo de upload de arquivos com o PHP é bem simples. Vamos utilizar os valores das Superglobals:

Superglobals são variáveis PHP integradas que sempre estão disponíveis para uso. Também vamos utilizar as funções:

<?php if ($_SERVER['REQUEST_METHOD'] == 'POST') { $uploadfile = './uploads/' . basename($_FILES['file']['name']); if (move_uploaded_file($_FILES['file']['tmp_name'], $uploadfile)) { exit("Upload realizado com sucesso."); } exit("Falha o realizar upload de arquivo."); } ?>

No código acima primeiro verificamos se a requisição é do tipo POST, essa informação está disponível na Superglobal: $_SERVER. Depois criamos o nome que o arquivo terá no servidor, concatenando o diretório onde o arquivo ficará com o nome do arquivo disponível na Superglobal: $_FILES. Usamos a função: basename para pegar o nome do arquivo.

Por último utilizamos a função: move_uploaded_file para mover o arquivo para o diretório definitivo.

Utilização do upload de arquivos

Para utilizarmos o exemplo primeiro vamos criar o diretório: uploads, que é onde ficarão os arquivos.

Para rodar o exemplo utilizei o servidor Web de desenvolvimento que o PHP disponibiliza.

php -S localhost:8080

Observações importantes

Deixo duas observações importantes, na hora de realizarmos o upload de arquivos para o servidor.

permissões

A primeira é verificar as permissões no diretório para onde será feito o upload dos arquivos. Veja no artigo: Entendendo permissões de arquivos e diretórios no Linux, sobre permissões em diretórios e arquivos.

Upload MAX Filesize

A segunda é verificar o tamanho máximo em MB de upload, que está configurado no PHP. Esta configuração é a upload_max_filesize que normalmente fica no arquivo: php.ini.