Como validar múltiplas imagens com PHP


Neste tutorial, será apresentado como validar múltiplas imagens com PHP. 

Primeiramente, será mostrado como criar o formulário de upload múltiplo de arquivos. 

Em seguida, será apresentado como receber múltiplos arquivos do formulário com PHP. 

Por fim, será mostrado como validar a extensão e o tamanho do arquivo com PHP.

Download do código fonte desenvolvido na aula: Download

Curso de PHP Developer: Mais Detalhes do Curso

Playlist completa sobre upload de imagem com JavaScript: Acessar

Receber as aulas gratuitas do curso de PHP Developer: Acessar


Para começar, é criado o arquivo "index.php" com a estrutura básica do HTML.

<!DOCTYPE html>
<html lang="pt-br">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Celke</title>
</head>
<body>
    // Conteúdo da página
</body>
</html>

Criado o formulário com o campo de upload múltiplo de arquivos, é importante utilizar o atributo enctype="multipart/form-data" na TAG form para que o formulário aceite arquivos.

<!-- Inicio do formulário -->
<form method="POST" action="upload.php" enctype="multipart/form-data">

    <label>Selecione as Imagens: </label>

    <!-- Campo para selecionar as imagens -->
    <!--<input type="file" name="imagens[]" id="imagens" multiple accept="image/*"><br><br>-->
    <input type="file" name="imagens[]" id="imagens" multiple><br><br>

    <!-- Botão para enviar as imagens selecionadas -->
    <input type="submit" value="Enviar Imagens"><br><br>

</form>
<!-- Fim do formulário -->

Criado o arquivo 'upload.php' para receber as imagens do formulário e validar a extensão e o tamanho do arquivo com PHP.

<?php

// Verifica se algum arquivo foi enviado
if (isset($_FILES['imagens']['name'][0]) and !empty($_FILES['imagens']['name'][0])) {
    //var_dump($_FILES['imagens']);

    // Array de extensões de arquivo permitidas
    $extensaoValida = ['image/jpeg', 'image/jpg', 'image/png'];

    // Tamanho máximo do arquivo permitido (5MB)
    $tamanhoMaximoArquivo = 5 * 1024 * 1024;

    // Percorrer a lista de arquivos
    foreach ($_FILES['imagens']['tmp_name'] as $chave => $arquivo) {
        //var_dump($_FILES['imagens']['name'][$chave]);

        // Receber os valores da imagem
        $nomeArquivo = $_FILES['imagens']['name'][$chave];
        $tamanhoArquivo = $_FILES['imagens']['size'][$chave];
        $tipoArquivo = $_FILES['imagens']['type'][$chave];

        // Verifica a extensão do arquivo
        if (!in_array($tipoArquivo, $extensaoValida)) {
            echo "<p style='color: #f00;'>Erro: Extensão do arquivo " . $nomeArquivo . " não permitida.</p>";

            // continue - interrompe a iteração atual do loop e passa para a próxima iteração
            continue;
        } 

        // Verifica o tamanho do arquivo
        if($tamanhoArquivo > $tamanhoMaximoArquivo){
            echo "<p style='color: #f00;'>Erro: Tamanho do arquivo " . $nomeArquivo . " excede o limite de 5MB.</p>";

            // continue - interrompe a iteração atual do loop e passa para a próxima iteração
            continue;
        }

        echo "<p style='color: #282;'>Erro: Extensão do arquivo " . $nomeArquivo . " permitida.</p>";

        // Criar o upload do arquivo -->> Próxima aula
        
    }
} else {
    echo "<p style='color: #f00;'>Erro: Nenhuma imagem foi enviada ou tipo de arquivo enviado é inválido.</p>";
}

echo "<a href='index.php'>Voltar</a>";

Baixar o código-fonte completo do projeto.

Bom, era isso. Espero que o tutorial tenha sido útil!