| :: Tutorial: Gestión de archivos mediante PHP |
Resumen del Recurso
Describe el procedimiento y rutinas para la gestión de archivos mediante el lenguaje PHP. Tabla de Contenidos
• Introducción
• Abriendo y cerrando un archivo
• Navegando un archivo
• Leyendo un archivo
• Escribiendo en un archivo
• Copiando un archivo
• Renombrando un archivo
• Eliminando un archivo
• Información de los archivos
Introducción
En una aplicación web es sumamente importante permitir al navegante la posibilidad de manipular, ya sea subiendo archivos planos o fotos mediante un simple formulario y no utilizando un cliente ftp.
Para usuarios avanzados este método quizás es el más usual y conveniente pero en términos de usabilidad debemos evaluar poder ofrecer esta opción a usuarios noveles.
Además, es innegable que en muchos casos puede ser mas cómodo y hasta más sencillo y manejable utilizar simples archivos de textos que complejas bases de datos.
Por ello en este tutorial iremos tocando las diversas operaciones que podremos realizar sobre un determinado archivo, a saber:
Leer
Escribir
Copiar
Renombrar
Eliminar
Asimismo iremos conociendo más a fondo el tema de permisos de acceso a esos archivos.
Abriendo y cerrando un archivo
Para poder abrir un archivo deberemos usar la función fopen(). Que hace fopen()? Básicamente crea un apuntador o “puntero” que apunta a una dirección determinada y permite posteriormente abrir una “secuencia” o proceso, que puede usarse para borrar, editar o bien limpiar un archivo de valores anteriores.
La sintaxis que usa esta función es:
Fopen (nombre del archivo, modo)
Si bien el primer parámetro es sencillo de entender (el nombre de nuestro archivo, por ejemplo: archivo.txt) tengamos en cuenta siempre, que además, debemos indicar el camino absoluto o relativo al archivo en cuestión. Ejemplo:
$archivo = “contenidos/ejemplo.txt”;
$puntero= fopen($archivo, “r”);
En el segundo valor conviene que nos detengamos un poco para poder aclararlo en forma más profunda. El modo significa la forma de apertura o tipo de acceso que elegiremos y depende en gran medida de la necesidad especifica que tengamos para con el mismo.
Por ejemplo, si sólo deseamos leerlo estará de más abrirlo también para edición. Con este sencillo listado de valores veremos cada modo en forma especial:
• Fopen (“ejemplo.txt”, “a”): Se abre de esta forma sólo cuando se agrega información, en este caso puntual, al final del archivo. Con el agregado del operador + (por ejemplo: Fopen (ejemplo.txt, “a+”) ) no solo se busca agregar información sino también leerlo. En ambos casos la información se agrega al final del archivo. En términos de programación se habla de un “apuntador” que se coloca al final del archivo. De igual forma, tanto con “a” como con “a+” si el archivo no existía se procede a crearlo.
• Fopen (“ejemplo.txt”, “r”): Se abre de esta forma sólo cuando se busca leer información. Con el agregado del operador + (por ejemplo: Fopen (“ejemplo.txt”, “r+”) ) no sólo se busca leer información sino también escribir en el archivo. En este ultimo caso la información se agrega al principio del archivo.
• Fopen (“ejemplo.txt”, “w”): Se abre de esta forma sólo cuando se busca escribir información borrando todo el contenido existente del archivo. Con el agregado del operador + (por ejemplo: Fopen (“ejemplo.txt”, “w+”) ) no solo se busca escribir información sino también lectura. De igual forma, tanto con w como con w+ si el archivo no existía se procede a crearlo.
Por ejemplo:
$archivo = “ejemplo.txt”;
$puntero= fopen($archivo, “r”);
Es importante que el archivo sea accesible para PHP, así que debe asegurarse de que los permisos de acceso del archivo sean los apropiados.
En el caso de surgir errores en la apertura podríamos controlar el mensaje de salida utilizando la arroba (@) con el operador die() (lo hemos visto en manejo de consultas y conexiones a bases de datos) podremos dar un mensaje mas amistoso al usuario, por ejemplo:
$archivo = “ejemplo.txt”;
@(fopen($archivo, “r”)) or die (“No fue posible abrir el archivo $archivo”);
Por ultimo, y esto vale para todos los casos, es de suma importancia prestar atención a las barras, según sea el sistema operativo que usemos. Más aún si, por ejemplo, trabajamos en modo local en Windows y luego subimos nuestros archivos a un servidor Linux. Por ejemplo:
// Windows
$fh = fopen('c:temp', 'r');
// Linux
$fh = fopen('/tmp', 'r');
Si han visto el manejo de una conexión a base de datos podrán recordar que así como en algún momento abríamos el enlace a la base al finalizar también cerrábamos ese vinculo de conexión. Aquí ocurre algo similar, es decir, la conexión a un archivo podrá ser cerrado con la opción fclose(). Un ejemplo de esta función es:
fclose($puntero)
Como ven estamos cerrando el archivo pero invocamos al puntero a esa conexión y no la variable que representa al archivo. Esto es importante destacarlo ya que suele ser motivo de confusión y produce frecuentes errores en el código.
Navegando un archivo
Una vez abierto un archivo podemos movernos en el, a través de los punteros internos y diversas funciones que seguidamente estudiaremos:
$archivo = “ejemplo.txt”;
$puntero = fopen($archivo, 'r');
feof($puntero); Es un operador booleano que nos indicará TRUE si el puntero se encuentra al final del archivo y FALSE en caso contrario.
rewind($puntero); Devuelve el puntero al comienzo del archivo.
fseek($puntero, 5); Envía el puntero a la posición (en bytes) indicada en el segundo parámetro.
ftell($puntero); Devuelve la posición actual del puntero dentro del archivo (en bytes).
Leyendo un archivo
Una vez que creamos las condiciones de apertura, por ejemplo, para leer el archivo procederemos a utilizar las funciones para llevar a buen puerto dicha operación.
PHP nos permitirá leer el archivo recorriéndolo en su totalidad o bien en forma parcial. Para el primer caso usaríamos fpassthru() en un ejemplo simple de la siguiente forma:
$archivo = “ejemplo.txt”;
$puntero = fopen($archivo, 'r');
$contenido = fpassthru($puntero);
fclose($puntero);
echo $contenido;
En el caso anterior podríamos haber obviado la función fclose(); ya que la función fpassthru(); cierra automáticamente el archivo una vez que cumplió su cometido.
En el caso que sólo deseemos leer una parte del archivo usaremos la función fread() Esta función utiliza el segundo parámetro como tope de una cantidad estipulada de caracteres (contando desde el principio) y se apoya en la orden echo para imprimir esa cantidad determinada por pantalla. Por ejemplo, si deseáramos escribir sólo los primeros 20 caracteres de nuestro archivo de ejemplo lo haríamos de la siguiente manera:
$archivo = “ejemplo.txt”;
$puntero= fopen($archivo, 'r');
echo fread($puntero, 20);
fclose($puntero);
Por otra parte podemos utilizar la función readfile(), para la cual, no necesitamos abrir el archivo de ninguna manera para obtener su contenido. Por ejemplo:
$archivo = “ejemplo.txt”;
readfile($archivo);
Esta función escribirá el contenido del archivo directamente. Debemos tener en cuenta que si hacemos un echo de esta función o guardamos el contenido en un variable, al final del mismo se agregará un número correspondiente al tamaño del archivo expresado en bytes.
Asimismo existen otras funciones como file(), fgetc(), fgets(), etc que permiten manipular de diferentes formas un archivo. Si algo diferencia a PHP y lo hace poderoso es la gran cantidad de posibilidades que brinda en ese sentido, en parte gracias a la poderosa y rica herencia proveniente de lenguajes como C y Perl.
Escribiendo en un archivo
Una vez que abrimos un archivo con las intenciones de escribir en el, podemos usar las funciones fwrite(); o fputs(); que es en realidad un alias de la primera.
Primero debemos abrir el archivo y para ello utilizamos lo siguiente:
$archivo = “ejemplo.txt”;
$puntero = fopen($archivo, 'w+');
donde al usar w+ borraremos todo el contenido del archivo y además si el archivo no existiera, se crearía uno.
Luego escribiremos una cadena de texto en el, y por último lo cerramos.
$contenido = “Este es el texto que escribiremos. Bienvenidos ”;
fwrite($puntero, $contenido);
fclose($puntero);
Con esto habremos escrito la cadena guardada en la variable $contenido dentro del archivo “ejemplo.txt”. La función fwrite(); acepta un tercer parámetro numérico que indica la cantidad máxima de caracteres a escribir, si la cadena es más larga que este número, sólo se escribirán los caracteres permitidos.
Otra forma de escribir dentro de archivos es agregando caracteres al final de un archivo que ya posee contenido, para ello abriremos el mismo utilizando el parámetro a+.
$archivo = “ejemplo.txt”;
$puntero = fopen($archivo, 'a+');
$ContenidoFinal = “Esto es texto adicional...”;
fwrite($puntero, $ContenidoFinal);
fclose($puntero);
de esta manera hemos agregado la cadena de texto guardada en la variable $ContenidoFinal al final del archivo.
Copiando un archivo
Para hacer copias PHP se vale de la función copy(), la cual recibe como argumentos el archivo origen como primer parámetro y el destino como segundo, es decir:
copy (archivo origen, archivo destino);
Por ejemplo:
$archivo_origen = “ejemplo.txt”;
$archivo_copia = “copia_de_ejemplo. txt”;
copy ($archivo_origen, $archivo_copia);
Esta función es usualmente muy usada para enviar archivos a través de formularios usando a este como un transporte pasajero hacia su ubicación definitiva.
Renombrando un archivo
Para renombrar un archivo usaremos la función rename() que al igual que copy() recibe dos parámetros de origen y destino, es decir:
rename (nombre archivo anterior, nuevo nombre de archivo);
Por ejemplo:
$viejo_nombre = ‘ejemplo.txt’;
$nuevo_nombre = ‘ejemplo_renombrado.txt’;
rename ($viejo_nombre, $nuevo_nombre);
Eliminando un archivo
Si lo que necesitamos es eliminar un archivo, haremos uso de la función unlink(); Veamos el siguiente ejemplo:
$archivo= “../contenido/ejemplo.txt”;
unlink($archivo);
Información de los archivos
Del mismo modos y gracias a las ya mencionadas innumerables posibilidades que ofrece PHP podremos averiguar características de los archivos tales como su tipo y su peso con funciones como filetype() y fsize(), si es un archivo regular o bien una carpeta a través de is_file() o is_dir(), si del tipo ejecutable con la función is_executable(), si es un enlace, etc.
También podremos controlar el estado del archivo a nivel de permisos. En ese sentido contamos con funciones como is_readable() o is_writeable(), las cuales chequean si podemos leer o escribir respectivamente en el archivo que pasamos como parámetro de dichas funcionalidades.
Invitamos a todos a investigar esta sección con mucho detenimiento ya que contamos con gran cantidad de herramientas que harán muy sencillo y hasta atractivo el procesamiento avanzado de archivos, directorios y cadenas dentro de esos archivos.
Como siempre este es sólo un pequeño puntapié para que luego Uds. Ingresen de lleno en este tema de la gestión de archivo.
Fuente: dattatec.com
|
|
|
|
| |
Agregar a favoritos
Versión Imprimible Enviar a un Amigo
Compartir:

Zips Populares - Visualizan cómo el sida infecta las células humanas - Superstición: La Luna es mujer - La Encuesta y tipos de encuesta - Ideas para las mamas que trabajan - Suposiciones mortales del e-business - G2P, el buscador de MP3s basado en Google - Aislamiento del espacio hueco debajo del piso
|