Cargar un archivo desde el cliente al servidor: uso de FILES

Código fuente PHP

// 019-CodigoPHP.php
// Versión 1.0 30/12/2017 Juan Manuel Cueva Lovelle. Universidad de Oviedo
// Versión 1.1 04/12/2018 Se cierran las etiquetas input

// Método POST de HTTP - Los datos enviados van a través de la cabecera HTTP
// Método POST de HTTP - La seguridad depende del protocolo HTTP
// Método POST de HTTP - Si se usa HTTP seguro se puede transmitir la información de forma segura
// Método POST de HTTP - No tiene restricciones en el tamaño de los datos enviados
// Método POST de HTTP - Puede utilizar tanto datos en texto como datos binarios

// form enctype='multipart/form-data' - Los caracteres no están codificados. Es obligatorio para cargar archivos

// $_FILES - Es una variable predefinida en PHP
// $_FILES - Es superglobal en PHP
// $_FILES - Es un array asociativo de variables en dos dimensiones que almacena toda la información relativa al archivo cargado
// $_FILES['archivoCliente']['tmp_name'] - El archivo cargado en un directorio temporal en el servidor Web
// $_FILES['archivoCliente']['name'] - El nombre actual del archivo cargado
// $_FILES['archivoCliente']['size'] - El tamaño en bytes del archivo cargado
// $_FILES['archivoCliente']['type'] - El tipo MIME del archivo cargado
// $_FILES['archivoCliente']['error'] - El código de error asociado con el archivo cargado

// UPLOAD_ERR_OK - Valor: 0 - No hay error, archivo cargado con éxito
// UPLOAD_ERR_OK - Valor: 1 - El archivo cargado excede del tamaño máximo permitido. Se define en upload_max_filesize en php.ini

echo "
        <form action='#' method='post' enctype='multipart/form-data'>
            <p>Archivo a cargar desde la máquina cliente</p> 
            <p>
                <input type='file' name='archivo'/>
            </p>
            <p>
                <input type='submit' value='Enviar'/>
            </p>
        </form>
    ";

if ($_FILES) {
    echo "<h3>Información del archivo subido desde la máquina cliente</h3>";
    echo "<ul><li>Nombre: " . $_FILES['archivo']['name'] . "</li>";
    echo "<li>Tamaño: " . $_FILES['archivo']['size'] . " bytes</li>";
    echo "<li>Tipo: " . $_FILES['archivo']['type'] . "</li></ul>";

    echo "<h4>Contenido del array asociativo _FILES</h4>";
    echo "<pre>";
    print_r($_FILES); //Imprime el contenido del array asociativo
    echo "</pre>"; 

    // Solamente se muestran los archivos de texto

    $tipo = substr($_FILES['archivo']['type'], 0, 4);
    if( strcmp($tipo, 'text') == 0) {
        echo "<h4>Contenido del archivo de texto</h4>";
        $fp = fopen($_FILES['archivo']['tmp_name'], 'rb');
        while ( ($linea = fgets($fp)) !== false) {
            echo "<p>" . $linea . "</p>";
        }
    }
}

Ejecución del código PHP

Archivo a cargar desde la máquina cliente