Esta página explica cómo hacer que un formulario envíe un archivo al servidor y cómo hacer que éste lo procese.
Para poder recibir archivos, debes tener establecidas las siguientes directivas de configuración en el archivo PHP.ini
Un formulario puede enviar un archivo al servidor mediante un control de tipo file. El formulario sería:
<form action="carga_archivos.php" method="post" enctype="multipart/form-data">
<input type="file" name="nombre_archivo_cliente"><br>
<input type="submit" name="enviar" value="Enviar">
</form>
Es importante que el atributo method tenga el valor post y que el atributo enctype tenga el valor multipart/form-data.
El aspecto del formulario dependerá del navegador que utilices. En este navegador sería:
Cuando PHP recibe el archivo, lo almacena en el directorio upload_tmp_dir y rellena la matriz asociativa superglobal $_FILES["nombre_archivo_cliente"] (el nombre que se haya dado al control en el formulario). Esa matriz contiene los siguientes elementos:
Como el archivo del directorio temporal desaparecerá al acabar el script, es necesario copiar el archivo a otro lugar. Para ello utiliza la función move_uploaded_file($origen, $destino), en la que $origen es el nombre del archivo cargado en el directorio temporal (normalmente puedes utilizar directamente $_FILES['nombre_archivo_cliente']['tmp_name']) y $destino el nombre del archivo que contendrá la copia.