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> <html> <header> <title>Upload arquivos PHP</title> </header> <body> <form method="POST" enctype="multipart/form-data" action="/upload.php"> <div> <label for="file">Arquivo:</label> <input type="file" id="file" name="file" required> </div> <button type="submit">Upload</button> </form> </body> </html>
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:
- $_SERVER
- $_FILES
Superglobals são variáveis PHP integradas que sempre estão disponíveis para uso. Também vamos utilizar as funções:
- basename – Retorna o nome do arquivo do caminho especificado.
- move_uploaded_file – Move um arquivo de upload para um novo local.
<?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.