PHP es capaz de recibir envíos de archivo de cualquier navegador que cumpla la norma RFC-1867 (entre los que se incluyen Netscape Navigator 3 o posterior, Microsoft Internet Explorer 3 con un parche o posterior sin éste). Ésta característica permite que los usuarios envien archivos de texto y binarios. Mediante la autentificación y funciones de manejo de archivos de PHP, es posible un control total de quién puede enviar archivos y que se hace con éstos una vez recibidos.
Es importante destacar que PHP también soporta el método PUT para envío de archivos tal y como lo utiliza Netscape Composer y el cliente Amaya de W3C. Consulte Soporte del método PUT para más detalles.
Una página de envío de archivos se puede crear mediante un formulario parecido a éste:
$userfile - El archivo temporal que se ha guardado en el servidor.
$userfile_name - El nombre original del archivo enviado.
$userfile_size - El tamaño del archivo recibido.
$userfile_type - El tipo mime del archivo si el navigador envio esta información. Por ejemplo: "image/gif".
Los archivos enviados serán guardados en el directorio temporal por defecto del servidor. Podemos variar este directorio mediante la variable de entorno TMPDIR en el entorno donde corre PHP. No se puede establecer este valor usando putenv() desde un script PHP.
El script PHP que recibe el archivo enviado debe implementar las acciones que se deben llevar a cabo con el archivo acabado de recibir. Por ejemplo se podria utilizar $file_size para decidir descartar los archivos que sean demadiado pequeños o demasiado grandes. Sean cual sean las acciones a tomar se debe borrar el archivo temporal o moverlo a algún otro directorio.
El archivo recibido será eliminado inmediatamente del directorio temporal al finalizar el script PHP que lo recibió si no ha sido movido o renombrado.