Skip to content

1b subirFichero

Ejemplo básico para subir un fichero

Ejemplo básico y completo para subir un archivo en PHP

Dos archivos: uno para el formulario HTML donde el usuario puede seleccionar el archivo y otro en PHP para procesar la subida.

0. Crea la carpeta uploads/

Tendrás que crear la carpeta uploads. y darle permisos de escritura


1. Formulario HTML (index.html)

fíjate en el tipo "FILE"

<!DOCTYPE html>
<html lang="es">
<head>
    <meta charset="UTF-8">
    <title>Subir Archivo</title>
</head>
<body>
    <h1>Subir un archivo</h1>
    <form action="subir.php" method="POST" enctype="multipart/form-data">
        <label for="archivo">Selecciona un archivo para subir:</label>
        <input type="file" name="archivo" id="archivo" required><br><br>
        <input type="submit" value="Subir Archivo">
    </form>
</body>
</html>

2. Archivo PHP para procesar la subida (subir.php)

Fíjate, comenta y actualiza en tu documentación los diferentes apartados.

Crea entradas con echo para testear los datos del archivo subido en la pantalla como echo $_FILES ...

<?php
// Verificar si el formulario ha sido enviado
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    // Comprobar si el archivo ha sido cargado sin errores
    if (isset($_FILES['archivo']) && $_FILES['archivo']['error'] == 0) {

        // Información del archivo
        $nombre_archivo = $_FILES['archivo']['name'];
        $tipo_archivo = $_FILES['archivo']['type'];
        $tmp_archivo = $_FILES['archivo']['tmp_name'];
        $tamaño_archivo = $_FILES['archivo']['size'];

        // Definir el directorio de destino
        $directorio_destino = 'uploads/'; // Asegúrate de crear esta carpeta y darle permisos de escritura

        // Comprobar el tamaño del archivo (por ejemplo, limitar a 2MB)
        if ($tamaño_archivo <= 2 * 1024 * 1024) {
            // Mover el archivo desde el directorio temporal al directorio de destino
            if (move_uploaded_file($tmp_archivo, $directorio_destino . $nombre_archivo)) {
                echo "El archivo '$nombre_archivo' ha sido subido exitosamente.";
            } else {
                echo "Error al mover el archivo al directorio de destino.";
            }
        } else {
            echo "El archivo es demasiado grande. El tamaño máximo permitido es 2MB.";
        }
    } else {
        echo "No se ha subido ningún archivo o ha ocurrido un error en la carga.";
    }
} else {
    echo "Por favor, use el formulario para subir un archivo.";
}
?>

Documentación

  1. Formulario HTML (index.html) :

  2. Se utiliza un formulario con el atributo enctype="multipart/form-data" para permitir la carga de archivos.

  3. El input type="file" permite seleccionar el archivo a subir.

  4. Script PHP (subir.php) :

  5. Primero, se verifica que la solicitud sea un POST y que el archivo no tenga errores con $_FILES['archivo']['error'] == 0.

  6. Se obtiene información sobre el archivo (nombre, tipo, tamaño, archivo temporal).
  7. Se verifica el tamaño del archivo (en este caso, limitado a 2MB).
  8. Se utiliza move_uploaded_file para mover el archivo desde el directorio temporal a un directorio de destino en el servidor (en este caso, la carpeta uploads/).
  9. Si todo es correcto, se confirma que el archivo se subió exitosamente, si no, se muestra un error.

Permisos de carpeta :

Asegúrate de que la carpeta uploads/ tenga permisos de escritura para que PHP pueda mover el archivo a esa ubicación.

  • Seguridad : Este ejemplo es muy básico. En un entorno de producción, deberías validar el tipo de archivo y aplicar medidas de seguridad adicionales, como renombrar el archivo o verificar su extensión para evitar posibles vulnerabilidades.

Con este código básico, tendrás una forma funcional de subir archivos en PHP sin necesidad de interactuar con una base de datos.