variables predefinidas PHP

Trabajo con ficheros y directorios en PHP

variables predefinidas PHPAcabado de subir el último de los ejercicios de PHP que colgué, voy a seguir un poco más con el tema de trabajar con ficheros y directorios. Ahora va un poco de teoría con la que espero poder dejar un poco más claro el código anterior (ya que los comentarios que acompañan a ese código son mis explicaciones de andar por casa… y no todo el mundo las entenderá … ni yo mismo las entiendo en muchas ocasiones).

Bueno, dicho esto, vamos al asunto …

Para empezar, decir que el recurso (resource) que devuelven las funciones opendir(), tmpfile() y openfile() es de tipo strem. Es destruido por las funciones closedir() y fclose().



Trabajando con ficheros y directorios mediante PHP

Las funciones relacionadas con los directorios:

  • getcwd(): Devuelve el directorio actual de trabajo del script (Current Working Directory). Si falla devuelve FALSE.
  • dirname (string $path): El parámetro que se le pasa por la cabecera (path) contiene la ruta a un fichero o un directorio. Esta función devuelve la ruta del directorio padre.
  • basename (ruta): Esta no es una operación de ficheros propiamente dicha, sino más bien de cadenas de caracteres, ya que tanto lo que pasamos a la función como lo que obtenemos de ella, son strings. Dada una cadena de caracteres que definen una tura o posición de un fichero en el disco duro (separados los directorios por el caracter “/” o “”), basename() nos devuelve los caracteres que están después del último carácter que usamos como separador. Por ejemplo, si le aplicamos esta función a la cadena /hola/que/tal, obtendemos tal.
  • dirname(ruta): Hace lo inverso a la función basename(), es decir, devuelve la ruta de directorios y subdirectorios donde está ubicado el fichero: los directorios por los que hay que pasar para encontrarlo; aplicando a “/hola/que/tal”, obtendremos “/hola/que”.
  • disk_free_space(dir): Esta función toma una ruta a un directorio y devuelve el espacio libre en octetos disponibles en el sistema de ficheros que contiene al directorio.
  • disk_total_space(dir): Toma una ruta a un directorio y devuelve el tamaño del sistema de fichero donde está situado dicho directorio.

Subir ficheros al servidor:

Para subir ficheros al servidor, tendremos que indicar el método de transferencia de los datos del formulario mediante POST y que viajarán codificador como multipart/form-data.

Opcionalmente, se puede expresar el tamaño máximo que podrá tener un fichero para poder ser enviado como un campo de datos oculto, al que hay que identificarlo como max_file_size (si no se indica se tomará la directiva upload_max_filesize).

<input type=”hidden” name=”max_file_size” value=”1000″>

Una vez transferido se almacena en el directorio que se especifica en el fichero php.ini a través de la directiva upload_tmp_dir.

Para poder trabajar con los ficheros así transmitidos. PHP nos proporciona el array asociativo $_FILES. Este array tiene dos dimensiones; en la primera columna se indican los ficheros que se han subido usando como claves los identificadores que usamos en la etiqueta <input>, mientras que las claves de la segunda columna se corresponderán con las características de cada fichero:

ClaveDescripción
nameNombre del fichero transferido.
tmp_nameNombre del fichero temporal donde está guardado el fichero recién subido. Si no se pudiera haber cumplido esta operación (por ejemplo, el fichero es demasiado grande), entonces obtendremos none.
TypeEl tipo MIME del fichero (indicado por el cliente)
errorCódigo de error devuelto: indica cómo ha ido la transferencia.
sizeTamaño en caracteres del fichero.

Los códigos de error que podremos encontrarnos son los siguientes:

ValorConstanteSignificados
0UPLOAD_ERR_OKSin errores
1UPLOAD_ERR_INI_SIZEEl fichero es mayor que el tamaño indicado en la directiva upload_max_filesize del fichero de configuración php.ini
2UPLOAD_ERR_FORM_SIZEl fichero es mayor que el tamaño indicado en el campo oculto max_file_size
3UPLOAD_ERR_PARTIALEl fichero ha sido parcialmente transferido
4UPLOAD_ERR_NO_FILENo se ha transferido el fichero

También dispondremos de un par de funciones útiles para trabajar con estos ficheros:

  • is_uploaded_file ($_FILEs[‘identif_fich’][‘tmp_name’]: nos indica si el fichero ha sido subido.
  • move_uploaded_files(nombre_fichero_original, destino): nos sirve para renombrar o mover el fichero temporal a otro que será permanente.

Directivas de PHP.INI involucradas:

La siguiente tabla muestra un resumen de las directivas del fichero php.ini que nos determinarán el comportamiento del intérprete PHP en lo que a transferencia de ficheros al servidor se refiere:

DirectivaDescripción
file_uploadsEn función del valor que tenga  (on, off), permitirá o no subir ficheros al servidor.
upload_tmp_dirDirectorio en el servidor donde se almacenan de manera temporal los ficheros que han sido subidos.
upload_max_filesizeLimita el tamaño máximo que podrá tener un fichero para poder transferirse al servidor. Este valor prevalece sobre el valor dado en el campo oculto identificado como max_file_size.

Deja un comentario