MemoCode - PHP
MemoCode

Cómo Subir Múltiples Archivos en un Servidor Web con HTML y PHP en Formulario


1. Crea el archivo PHP con el nombre index.php.


2. Crearemos la sintaxis de html y crearemos un formulario para ingresar los archivos.


index.php
                    
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Subir Archivos</title>
</head>

<body>
    <form action="" method="POST" enctype="multipart/form-data">
        <label for="files">Selecciona uno o más archivos:</label>
        <input type="file" name="files[]" id="files" multiple> <!-- Aquí cambié a 'files[]' y añadí 'multiple' -->

        <input type="submit" value="Subir archivo" name="submit">
    </form>
</body>

</html>
                        
                  

Detalles que definen su funcion:


type="file": Especifica que este campo es para seleccionar archivos.


name="files[]": El uso de files[] permite que se seleccionen varios archivos y se envíen como un array.


multiple: Permite que el usuario seleccione más de un archivo a la vez.


3. Debajo de toda la estrcutura html agregaremos el codigo php el cual te mostramos a continuacion:


index.php
                    
<?php
// Verifica si el formulario ha sido enviado utilizando el método POST
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    // Directorio donde se guardarán los archivos subidos
    $direccion = "archivos/";

    // Extensiones permitidas para los archivos
    $extension_valida = ['pdf', 'txt', 'xlsx'];
    
    // Tamaño máximo permitido para los archivos en bytes (5MB)
    $max_file_size = 5 * 1024 * 1024; // 5MB

    // Limita la cantidad máxima de archivos permitidos
    $max_files = 3;

    // Cuenta la cantidad de archivos subidos
    $file_count = count($_FILES['files']['name']);

    // Verifica si la cantidad de archivos subidos excede el límite permitido
    if ($file_count > $max_files) {
        echo "Solo se permite subir un máximo de $max_files archivos al mismo tiempo.<br>";
    } else {
        // Recorre cada archivo subido por el usuario
        foreach ($_FILES['files']['name'] as $key => $filename) {
            // Genera la ruta completa donde se guardará el archivo
            $ruta = $direccion . basename($filename);
            
            // Obtiene la extensión del archivo en minúsculas
            $extension = strtolower(pathinfo($ruta, PATHINFO_EXTENSION));

            // Verifica si la extensión del archivo es válida
            if (!in_array($extension, $extension_valida)) {
                echo "Solo se permiten archivos pdf, txt y xlsx para el archivo: $filename.<br>";
            } 
            // Verifica si el tamaño del archivo no excede el límite permitido
            elseif ($_FILES["files"]["size"][$key] > $max_file_size) {
                echo "El archivo $filename es demasiado grande. El limite es de 5MB.<br>";
            } 
            // Si la extensión y el tamaño son válidos, intenta mover el archivo al directorio de destino
            else {
                if (move_uploaded_file($_FILES["files"]["tmp_name"][$key], $ruta)) {
                    // Muestra un mensaje de éxito si el archivo se subió correctamente
                    echo "El archivo " . basename($filename) . " ha sido subido correctamente.<br>";
                } else {
                    // Muestra un mensaje de error si hubo un problema al subir el archivo
                    echo "Hubo un problema al subir el archivo: $filename.<br>";
                }
            }
        }
    }
}
?>
                    
                  

4. Listo, ajusta el codigo a tus necesidades y pruebalo en tus proyectos.

Descargar proyecto Tutorial youtube