🛠️ Ejercicio 4: Subir un archivo con validación de tipo y tamaño
📌 Planteamiento:
Crea un formulario para subir un archivo.
En PHP valida lo siguiente:
- ✅ Solo se permiten archivos de imagen (jpg, png, gif).
- ✅ El tamaño máximo permitido es 1MB.
- ✅ Mostrar mensajes claros de éxito o error.
- ✅ Guardar el archivo en una carpeta llamada
uploads/.
uploads/ exista y tenga permisos de escritura).
✅ Modelo de solución:
<?php
$mensaje = "";
if ($_SERVER["REQUEST_METHOD"] == "POST") {
if (isset($_FILES["archivo"]) && $_FILES["archivo"]["error"] == 0) {
$permitidos = ["image/jpeg", "image/png", "image/gif"];
$maxTamano = 1 * 1024 * 1024; // 1MB
$tipoArchivo = $_FILES["archivo"]["type"];
$tamanoArchivo = $_FILES["archivo"]["size"];
if (!in_array($tipoArchivo, $permitidos)) {
$mensaje = "Error: Solo se permiten archivos JPG, PNG o GIF.";
} elseif ($tamanoArchivo > $maxTamano) {
$mensaje = "Error: El archivo excede el tamaño máximo de 1MB.";
} else {
$nombreArchivo = basename($_FILES["archivo"]["name"]);
$rutaDestino = "uploads/" . $nombreArchivo;
if (move_uploaded_file($_FILES["archivo"]["tmp_name"], $rutaDestino)) {
$mensaje = "Archivo subido con éxito: $nombreArchivo";
} else {
$mensaje = "Error al mover el archivo.";
}
}
} else {
$mensaje = "Error: No se ha seleccionado un archivo válido.";
}
}
?>
<form method="post" enctype="multipart/form-data" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]); ?>">
<label for="archivo">Selecciona un archivo de imagen (JPG, PNG, GIF):</label>
<input type="file" name="archivo" id="archivo" required />
<button type="submit">Subir archivo</button>
</form>
<?php if (!empty($mensaje)) : ?>
<p><?php echo $mensaje; ?></p>
<?php endif; ?>
🎯 Claves de este ejercicio:
- 📍 Manejo de formularios con
enctype="multipart/form-data". - 📍 Validación del tipo MIME del archivo.
- 📍 Control de tamaño máximo.
- 📍 Uso de
move_uploaded_file()para guardar el archivo.
No hay comentarios:
Publicar un comentario