Está en la página 1de 3

PHP - Subir archivos El lenguaje PHP permite administrar los archivos enviados (subidos) gracias a un formulario HTML.

Formulario de envo de archivos Configuracin de PHP para subir archivos Recuperar el archivo con PHP

Formulario de envo de archivos Lo primero que se debe hacer es crear un formulario HTML, que permita al usuario abrir una ventana de dilogo para seleccionar el archivo que se desea enviar:

<FORM method="POST" ENCTYPE="multipart/form-data"> <INPUT type=hidden name=MAX_FILE_SIZE VALUE=2048> <INPUT type=file name="nom_del_archivo"> <INPUT type=submit value="Enviar"> </FORM>

Es importante que no olvide el atributo ENCTYPE="multipart/form-data" de lo contrario, no tendr ningn efecto. Por otra parte el campo MAX_FILE_SIZE indica el tamao mximo del fichero que puede subir el navegador, pero eso no es suficiente para asegurarse que los archivos subidos no sobrepasarn un determinado tamao teniendo en cuenta que todos los navegadores no toman en cuenta sistemticamente este valor. El valor del tamao mximo del archivo subido es ajustable en el archivo de configuracin php.ini.

Configuracin de PHP para subir archivos El archivo de configuracin php.ini contiene directivas para autorizar o desautorizar el envo de archivos por medio de un formulario y tambin configurarlo: file_uploads= On/Off permite autorizar o desautorizar el envo de archivos. upload_tmp_dir = directorio permite definir el directorio temporal donde se colocar el archivo cargado. upload_max_filesize = 2M permite definir el tamao mximo autorizado del archivo. Si este lmite es sobrepasado, el servidor enviar un cdigo de error. post_max_size indica el tamao mximo de los datos enviados en un formulario. Esta directiva prima sobre upload_max_filesize, por lo que hay que asegurarse de tener post_max_size supeior a upload_max_filesize Si no tiene acceso a la configuracin (caso de un sitio web alojado en el servidor del proveedor de acceso o en el caso de un alojamiento mutualizado), entonces puede verificar la configuracin con la funcin phpinfo():

<? phpinfo(); ?>

Recuperar el archivo con PHP Puede acceder al archivo y a toda la informacin con respecto a ste por medio de la variable global $_FILES[]. Para mostrar lo que contiene, puede instalar el script siguiente:

<pre><? print_r($_FILES); ?></pre>

La salida de este cdigo ser de la forma siguiente:

Array ( [nom_du_fichier] => Array ( [name] => MiHermozaImage.jpg [type] => image/jpg [tmp_name] => ruta_completa_del_archivo_subido [error] => 0 [size] => 1000 ) )

En el caso que sigue a continuacin se trata de una imagen JPEG que pesa 1 Mo.

Los campos $_FILES[name], $_FILES[type], $_FILES|error], $_FILES[size] permiten efectuar tests del tipo de archivo, el tamao, el nombre y verificar si ha habido errores.. De este modo, podr tratar los errores de la siguiente manera:

<? if ($_FILES['nom_du_fichier']['error']) { switch ($_FILES['nom_du_fichier']['error']){ case 1: // UPLOAD_ERR_INI_SIZE echo"El archivo sobrepasa el limite autorizado por el servidor(archivo php.ini) !"; break; case 2: // UPLOAD_ERR_FORM_SIZE echo "El archivo sobrepasa el limite autorizado en el formulario HTML !");

break; case 3: // UPLOAD_ERR_PARTIAL echo "El envio del archivo ha sido suspendido durante la transferencia!"; break; case 4: // UPLOAD_ERR_NO_FILE echo "El archivo que ha enviado tiene un tamao nulo !"); break; } } else { // $_FILES['nom_del_archivo']['error'] vale 0 es decir UPLOAD_ERR_OK // lo que significa que no ha habido ningn error } ?> Gracias a la funcin move_uploaded_files() es posible transferir la imagen del directorio temporal a un directorio de destino:

<? if ((isset($_FILES['nom_del_archivo]['archivo'])&&($_FILES['nom_del_archivo']['error'] == UPLOAD_ERR_OK)) { $ruta_destino = '/var/www/archivos/'; move_uploaded_file($_FILES['nom_del_archivo']['tmp_name'], $ruta_destino.$_FILES ['nom_del_archivo']['name']); } ?>