Tutorial PHP

PHP INÍCIO Introdução ao PHP Instalação do PHP Sintaxe PHP Comentários PHP Variáveis ​​PHP PHP Eco/Impressão Tipos de dados PHP Strings PHP Números PHP Matemática PHP Constantes PHP Operadores PHP PHP If...Else...Elseif Chave PHP Loops PHP Funções PHP Matrizes PHP PHP Superglobais PHP RegEx

Formulários PHP

Manipulação de formulários PHP Validação de formulário PHP Formulário PHP obrigatório URL/e-mail do formulário PHP Formulário PHP completo

PHP Avançado

Data e hora do PHP Incluir PHP Manipulação de arquivos PHP Arquivo PHP Abrir/Ler Arquivo PHP Criar/Gravar Upload de arquivo PHP Cookies PHP Sessões PHP Filtros PHP Filtros PHP Avançados Funções de retorno de chamada do PHP PHP JSON Exceções do PHP

PHP OOP

PHP O que é POO Classes/objetos PHP Construtor PHP Destruidor PHP Modificadores de acesso PHP Herança PHP Constantes PHP Classes abstratas PHP Interfaces PHP Características PHP Métodos estáticos PHP Propriedades estáticas do PHP Namespaces PHP Iteráveis ​​PHP

Banco de dados MySQL

Banco de dados MySQL MySQL Connect MySQL Criar banco de dados MySQL Criar Tabela Dados de inserção do MySQL MySQL Obter Último ID MySQL Inserir Múltiplo Preparado para MySQL Dados de seleção do MySQL MySQL Onde MySQL Ordenar por Dados de exclusão do MySQL Dados de atualização do MySQL Dados de limite do MySQL

PHP XML

Analisadores XML PHP Analisador PHP SimpleXML PHP SimpleXML - Obter PHP XML Expatriado PHP XML DOM

PHP - AJAX

Introdução AJAX PHP AJAX Banco de dados AJAX XML AJAX Pesquisa em tempo real AJAX Enquete AJAX

Exemplos PHP

Exemplos PHP Compilador PHP Teste PHP Exercícios PHP Certificado PHP

Referência PHP

Visão geral do PHP Matriz PHP Calendário PHP Data do PHP Diretório PHP Erro PHP Exceção PHP Sistema de arquivos PHP Filtro PHP PHP FTP PHP JSON Palavras-chave PHP PHP Libxml Correio PHP Matemática PHP PHP Diversos PHP MySQLi Rede PHP Controle de saída PHP PHP RegEx PHP SimpleXML Fluxo PHP String PHP Manipulação de variáveis ​​PHP Analisador XML PHP PHP Zip Fusos horários PHP

Upload de arquivo PHP


Com PHP, é fácil fazer upload de arquivos para o servidor.

No entanto, com facilidade vem o perigo, então sempre tenha cuidado ao permitir uploads de arquivos!


Configurar o arquivo "php.ini"

Primeiro, certifique-se de que o PHP esteja configurado para permitir uploads de arquivos.

Em seu arquivo "php.ini", procure a file_uploadsdiretiva e defina-a como On:

file_uploads = On

Criar o formulário HTML

Em seguida, crie um formulário HTML que permita aos usuários escolher o arquivo de imagem que desejam enviar:

<!DOCTYPE html>
<html>
<body>

<form action="upload.php" method="post" enctype="multipart/form-data">
  Select image to upload:
  <input type="file" name="fileToUpload" id="fileToUpload">
  <input type="submit" value="Upload Image" name="submit">
</form>

</body>
</html>

Algumas regras a seguir para o formulário HTML acima:

  • Certifique-se de que o formulário usa method="post"
  • O formulário também precisa do seguinte atributo: enctype="multipart/form-data". Especifica qual tipo de conteúdo usar ao enviar o formulário

Sem os requisitos acima, o upload do arquivo não funcionará.

Outras coisas a serem observadas:

  • O atributo type="file" da tag <input> mostra o campo de entrada como um controle de seleção de arquivo, com um botão "Procurar" ao lado do controle de entrada

O formulário acima envia os dados para um arquivo chamado "upload.php", que criaremos a seguir.



Criar o script PHP do arquivo de upload

O arquivo "upload.php" contém o código para fazer upload de um arquivo:

<?php
$target_dir = "uploads/";
$target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);
$uploadOk = 1;
$imageFileType = strtolower(pathinfo($target_file,PATHINFO_EXTENSION));
// Check if image file is a actual image or fake image
if(isset($_POST["submit"])) {
  $check = getimagesize($_FILES["fileToUpload"]["tmp_name"]);
  if($check !== false) {
    echo "File is an image - " . $check["mime"] . ".";
    $uploadOk = 1;
  } else {
    echo "File is not an image.";
    $uploadOk = 0;
  }
}
?>

Explicação do script PHP:

  • $target_dir = "uploads/" - especifica o diretório onde o arquivo será colocado
  • $target_file especifica o caminho do arquivo a ser carregado
  • $uploadOk=1 ainda não é usado (será usado mais tarde)
  • $ imageFileType contém a extensão de arquivo do arquivo (em letras minúsculas)
  • Em seguida, verifique se o arquivo de imagem é uma imagem real ou uma imagem falsa

Nota: Você precisará criar um novo diretório chamado "uploads" no diretório onde o arquivo "upload.php" reside. Os arquivos enviados serão salvos lá.


Verifique se o arquivo já existe

Agora podemos adicionar algumas restrições.

Primeiro, vamos verificar se o arquivo já existe na pasta "uploads". Se isso acontecer, uma mensagem de erro será exibida e $uploadOk será definido como 0:

// Check if file already exists
if (file_exists($target_file)) {
  echo "Sorry, file already exists.";
  $uploadOk = 0;
}

Limitar tamanho do arquivo

O campo de entrada de arquivo em nosso formulário HTML acima é denominado "fileToUpload".

Agora, queremos verificar o tamanho do arquivo. Se o arquivo for maior que 500 KB, uma mensagem de erro será exibida e $uploadOk será definido como 0:

// Check file size
if ($_FILES["fileToUpload"]["size"] > 500000) {
  echo "Sorry, your file is too large.";
  $uploadOk = 0;
}

Limitar tipo de arquivo

O código abaixo só permite que os usuários carreguem arquivos JPG, JPEG, PNG e GIF. Todos os outros tipos de arquivo dão uma mensagem de erro antes de definir $uploadOk para 0:

// Allow certain file formats
if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg"
&& $imageFileType != "gif" ) {
  echo "Sorry, only JPG, JPEG, PNG & GIF files are allowed.";
  $uploadOk = 0;
}

Script PHP de arquivo de upload completo

O arquivo "upload.php" completo agora se parece com isso:

<?php
$target_dir = "uploads/";
$target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);
$uploadOk = 1;
$imageFileType = strtolower(pathinfo($target_file,PATHINFO_EXTENSION));

// Check if image file is a actual image or fake image
if(isset($_POST["submit"])) {
  $check = getimagesize($_FILES["fileToUpload"]["tmp_name"]);
  if($check !== false) {
    echo "File is an image - " . $check["mime"] . ".";
    $uploadOk = 1;
  } else {
    echo "File is not an image.";
    $uploadOk = 0;
  }
}

// Check if file already exists
if (file_exists($target_file)) {
  echo "Sorry, file already exists.";
  $uploadOk = 0;
}

// Check file size
if ($_FILES["fileToUpload"]["size"] > 500000) {
  echo "Sorry, your file is too large.";
  $uploadOk = 0;
}

// Allow certain file formats
if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg"
&& $imageFileType != "gif" ) {
  echo "Sorry, only JPG, JPEG, PNG & GIF files are allowed.";
  $uploadOk = 0;
}

// Check if $uploadOk is set to 0 by an error
if ($uploadOk == 0) {
  echo "Sorry, your file was not uploaded.";
// if everything is ok, try to upload file
} else {
  if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) {
    echo "The file ". htmlspecialchars( basename( $_FILES["fileToUpload"]["name"])). " has been uploaded.";
  } else {
    echo "Sorry, there was an error uploading your file.";
  }
}
?>

Referência completa do sistema de arquivos PHP

Para uma referência completa das funções do sistema de arquivos, acesse nossa Referência completa do sistema de arquivos PHP .