Você está na página 1de 3

PHP - Subir archivos

Junio 2014
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']);
}
?>
Este documento intitulado PHP - Subir archivos de Kioskea (es.kioskea.net) esta puesto a diposicin bajo la
licencia Creative Commons. Puede copiar, modificar bajo las condiciones puestas por la licencia, siempre que esta
nota sea visible.

Você também pode gostar