Envío de archivos al servidor.

Envío de archivos al servidor. Con PHP es posible manejar archivos que son enviados al servidor mediante el arreglo asociativo $_FILES. A continuación se presenta el código de un formulario en HTML elemental para subir archivos. <form name="frm" method="post" action="<?php echo $_SERVER['PHP_SELF']?>"
enctype="multipart/form-data">
<input type="file" name="frm_archivo" size="100"/>
<input type="submit" value="Guardar"/>
</form>
Destaca el parámetro enctype de la etiqueta <form> el valor que tiene asignado indica que los datos del formulario se enviarán en varias partes una de ellas será el archivo adjunto. El control para adjuntar un archivo es la etiqueta <input> cuyo tipo (type) es “file”, este control permite seleccionar un archivo. Parámetros Del lado de PHP el archivo se guardará como un elemento del arreglo $_FILES. Cada elemento de este arreglo es un arreglo con los siguientes elementos: Propiedad Descripción name Nombre original del archivo. Tipo MIME (Multipurpose Internet Mail Extensions, Extensiones de Correo de type Internet Multipropósito) del archivo. size Tamaño del archivo. tmp_name Ruta temporal del archivo en el servidor. Cuando al subir el archivo no ha ocurrido un error guardará un valor de cero. error Cuando ocurre un error puede guardar un valor de 1 a 8. Consulta el significado en: http://us2.php.net/manual/en/features.file‐upload.errors.php Por ejemplo, el archivo que sea subido por el formulario su tipo puede consultarse con: $_FILES[‘frm_archivo’][‘type’];
Una vez que ha subido el archivo al servidor es colocado en un directorio temporal. Para moverlo al directorio donde permanecerá se usa la función move_uploaded_file que recibe como parámetro la ruta temporal (tmp_name) y la ruta permanente. Ejemplo: move_uploaded_file($_FILES[‘frm_archivo’][‘type’], “uploads/archivo.jpg”);
Para este ejemplo el directorio uploads debe existir en el directorio donde reside el script. Es recomendable asignar un nombre distinto al original para cada archivo que sea subid al servidor. También es recomendable reestringir el tipo de archivos que pueden ser subidos al servidor para evitar problemas, por ejemplo, que un script de php malintencionado sea subido y ejecutado desde el servidor por un extraño. Se puede reestringir validando el nombre del archivo desde JavaScript o validando la propiedad type desde PHP. Tamaño de los archivos. El tamaño de los archivos que se pueden subir mediante PHP esta determinado en el archivo que conserva las opciones de configuración el cual se denomina php.ini y su ubicación depende de la instalación de PHP. Es posible leer las opciones de configuración en tiempo de ejecución con la función ini_get la cual recibe como parámetro el nombre de una variable residente en el archivo php.ini. Las siguientes variables controlan el tiempo de espera y el tamaño máximo que puede tener un archivo que sea subido al servidor. Variable Descripción post_max_size Es el tamaño máximo de datos enviados por POST. max_input_time Tiempo máximo para analizar la petición de datos. upload_max_filesize Tamaño máximo aceptable para un archivo. max_execution_time Tiempo máximo para la ejecución de un archivo. En el siguiente ejemplo se muestra la forma de consultar dichas variables usando ini_get: Post max size: <?php echo ini_get('post_max_size') ?>
Max input time: <?php echo ini_get('max_input_time') ?>
Upload max file size: <?php echo ini_get('upload_max_filesize') ?>
Por los valores que guardan estas variables podemos hacer que un script informe al usuario el tamaño máximo de archivo que puede aceptar el servidor.