PHP – Upload de arquivos para um site

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.

Deixe um comentário

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