Subida / Upload de archivos por formulario (PHP)

Subir archivos mediante formulario (PHP) Cuando creamos un formulario para recoger información del usuario, en ocasiones queremos permitir que éste pueda subir archivos, como por ejemplo una fotografía para realizar un perfil del usuario. Voy a exponer un código sencillo para el proceso de los archivos subidos por formulario que constará de tres partes: el formulario web, el script de recogida y validación de datos y la página final de resultados.

1 – El formulario web ‘formulario.php’, muy básicamente:

<html>
<head><title>Nuevo cliente</title></head>
<body>
<h3>Datos personales</h3>
<br>
<form name="formCliente" action="validaNuevoCliente.php"
      method="POST" enctype="multipart/form-data">
Nombre y apellidos: <input type="text" name="textNombre" />
<br />
DNI: <input type="text" name="textDNI" /><br />
Fotografía: <input type="file" name="fileFoto"><br />
<input type="submit" name="action" value="Enviar" />
</form>
<?php
  if($_GET['error'] != "")
    echo "<p>Error: ".$_GET['error']."</p>";
?>
</body>
</html>

2 – El script que recibe y valida ‘validaNuevoCliente.php’:

<html>
<head></head>
<body>
<?php
ob_start();

$nombre = $_POST['textNombre'];
$dni = $_POST['textDNI'];
$action = $_POST['action'];
$fileName = $_FILES['fileFoto']['name'];
$fileSize = $_FILES['fileFoto']['size'];

//validamos
if ($action != "Enviar") sendError("");
if ($nombre == "") sendError("Nombre incorrecto");
if ($dni == "") sendError("DNI incorrecto");
if ($fileName == "") sendError("Archivo no válido");
if ($fileSize == 0 || $fileSize > 1000000)
    sendError("Tamaño de archivo no válido");

//guardamos la información en la base de datos...

//guardamos el archivo en la carpeta adecuada
if (!move_uploaded_file(
     $_FILES['fileFoto']['tmp_name'],
     "imagenes/clientes/$fileName")
	)
    sendError("Error guardando el archivo");

header ("Location: resultado.php");
exit();

function sendError($message){
  header("Location: formulario.php?error=$message");
  exit();
}
?>
</body>
</html>
<?php
ob_end_flush();
?>

3 – Página de resultado ‘resultado.php’:

<html>
<head><title>Alta cliente</title></head>
<body>
<h3>Enhorabuena, ha sido dado de alta</h3>
</body>
</html>
Sin categoría

Deja una respuesta