📘 Aprender PHP do Zero — Parte 7: Upload de Imagens com PHP
Agora que você já criou um painel completo, vamos aprender a enviar imagens para o servidor, validar e exibir em uma galeria.
Você aprenderá:
- Criar formulário com envio de arquivos
- Validar extensão e tamanho
- Salvar com nomes únicos
- Exibir imagens cadastradas na galeria
- Testar tudo diretamente no seu Android
🧱 1. Banco de Dados e Pasta uploads/
Crie a tabela para armazenar os nomes das imagens:
CREATE TABLE galeria (
id INT AUTO_INCREMENT PRIMARY KEY,
nome_arquivo VARCHAR(200),
titulo VARCHAR(100)
);
E crie uma pasta chamada uploads/
no mesmo diretório dos arquivos PHP. Essa pasta deve ter permissão de escrita.
📤 2. Formulário de Upload (upload.html)
<form method="POST" action="upload.php" enctype="multipart/form-data">
Título: <input name="titulo"><br>
Imagem: <input type="file" name="imagem"><br>
<input type="submit" value="Enviar">
</form>
<a href="galeria.php">Ver Galeria</a>
Importante: O atributo enctype="multipart/form-data"
é necessário para uploads.
🔐 3. Código de Upload com Validação (upload.php)
<?php
require "conexao.php";
$titulo = $_POST["titulo"];
$arquivo = $_FILES["imagem"];
$nome = $arquivo["name"];
$tmp = $arquivo["tmp_name"];
$tipo = $arquivo["type"];
$tamanho = $arquivo["size"];
// Extensões permitidas
$permitidas = ["image/jpeg", "image/png", "image/jpg"];
$maximo = 2 * 1024 * 1024; // 2 MB
if (!in_array($tipo, $permitidas)) {
die("Tipo de imagem inválido.");
}
if ($tamanho > $maximo) {
die("Imagem muito grande (limite 2MB).");
}
// Gerar nome único
$novo_nome = uniqid() . "-" . basename($nome);
$caminho = "uploads/" . $novo_nome;
if (move_uploaded_file($tmp, $caminho)) {
$stmt = $conn->prepare("INSERT INTO galeria (nome_arquivo, titulo) VALUES (?, ?)");
$stmt->bind_param("ss", $novo_nome, $titulo);
$stmt->execute();
echo "Imagem enviada com sucesso! <br>";
echo "<a href='galeria.php'>Ver galeria</a>";
} else {
echo "Erro ao enviar imagem.";
}
?>
🖼️ 4. Exibindo as Imagens (galeria.php)
<?php
require "conexao.php";
$res = $conn->query("SELECT * FROM galeria ORDER BY id DESC");
while ($img = $res->fetch_assoc()) {
echo "<h3>" . htmlspecialchars($img["titulo"]) . "</h3>";
echo "<img src='uploads/" . $img["nome_arquivo"] . "' width='300'><hr>";
}
?>
Use htmlspecialchars()
para evitar problemas com títulos HTML.
🧪 5. Testar no Android
Use Acode ou Termux com PHP e MariaDB instalados. Siga os passos:
- Crie a pasta
uploads/
- Dê permissão:
chmod 777 uploads
- Rode o servidor:
php -S localhost:8000
- Acesse
http://localhost:8000/upload.html
Envie uma imagem e clique em Ver galeria
. Ela será exibida automaticamente!
✅ Conclusão da Parte 7
Você aprendeu a:
- Fazer upload de arquivos com PHP
- Validar tipo de imagem e tamanho
- Salvar com nome único
- Gravar o nome da imagem no banco
- Exibir tudo em uma galeria funcional
Próxima etapa:
👉 Parte 8: Vamos aprender a:
- Fazer login com imagem de perfil
- Exibir imagem na sessão do usuário
- Substituir imagem antiga ao atualizar
Parabéns por avançar até aqui! Agora você tem um sistema PHP completo com imagens, login, banco de dados e segurança.