Manipulación de Archivos y Directorios en el Servidor Temas: Creación, lectura, escritura, borrado...

Post on 02-Feb-2016

229 views 2 download

Transcript of Manipulación de Archivos y Directorios en el Servidor Temas: Creación, lectura, escritura, borrado...

Manipulación de Archivos y Directorios en el Servidor

Temas:

• Creación, lectura, escritura, borrado de archivos y directorios

Manipulación de Archivos y Directorios en el Servidor

Es muy común la práctica del tratamiento de archivos cualquier sitio Web. Muy a menudo se presenta la necesidad de procesar un texto para cambiarle el formato, buscar una cadena en su interior o cualquier otro tipo de operación.

PHP ofrece un sinfín de funciones para la gestión de archivos que van desde las más elementales de apertura, lectura y cierre a otras más rebuscadas como el cálculo de espacio en el disco duro, tamaño del archivo, gestión de derechos de acceso.

Manipulación de Archivos y Directorios en el Servidor

Funciones de gestión de archivos:

Manipulación de Archivos y Directorios en el Servidor

Modos de apertura de archivos:

Manipulación de Archivos y Directorios en el Servidor

Ejemplo 1:

En el ejemplo que se muestra a continuación se presenta una lectura secuencial para localizar dentro del texto una cadena cualquiera a la que, se le cambiará el formato para ponerla en negritas utilizando de la etiqueta <b>

Manipulación de Archivos y Directorios en el Servidor

<?phpfunction negrita($path,$cadena){

//Iniciamos la variable$texto = "";//Abrimos el archivo en modo lectura$fp = fopen($path,"r");//Leemos linea por linea el contenido del archivowhile ($linea= fgets($fp,1024)){ //Sustituimos las ocurrencias de la cadena que buscamos $linea = str_replace($cadena,"<b>$cadena</b>",$linea); //Anadimos la linea modificada al texto $texto .= $linea;}return $texto;

}

Manipulación de Archivos y Directorios en el Servidor

//Definimos el path y la cadena$path="escribe el camino de acceso a tu archivo";$cadena = "escribe tu cadena";

//Llamamos la funcion$texto = negrita ($path,$cadena);

//Mostramos el textoecho $texto;

?>

Manipulación de Archivos y Directorios en el Servidor

Ejemplo 2: Actualizar un contador en un archivo

Manipulación de Archivos y Directorios en el Servidor

function incremento_contador($archivo) { // $archivo contiene el numero que actualizamos

$contador = 0;//Abrimos el archivo y leemos su contenido$fp = fopen($archivo,"r");$contador = fgets($fp, 26);fclose($fp);//Incrementamos el contador++$contador;//Actualizamos el archivo con el nuevo valor$fp = fopen($archivo,"w+");fwrite($fp, $contador, 26);fclose($fp);echo "Este script ha sido ejecutado $contador veces";

}

Manipulación de Archivos y Directorios en el Servidor

function incremento_contador($destino){ $abrir = fopen($destino,"r"); $cuenta = trim(fread($abrir,filesize($destino)));

if ($cuenta != "") $cuenta++; else $cuenta = 1; @fclose($abrir); $abrir = fopen($destino,"w"); @fputs($abrir,$cuenta);

@fclose($abrir);

}

Manipulación de Archivos y Directorios en el Servidor

Funciones de gestión de directorios

Manipulación de Archivos y Directorios en el Servidor

Ahora se presenta un ejemplo sencillo de lo que se puede hacer con estas funciones, se presenta un script de lectura que permite visualizar el contenido de un directorio:

//definimos el path de acceso$path = "mi/camino";//abrimos el directorio$dir = opendir($path);//Mostramos las informacioneswhile ($elemento = readdir($dir)){echo $elemento."<br>";}//Cerramos el directorioclosedir($dir);

Manipulación de Archivos y Directorios en el Servidor

Métodos de la clase dir:

Manipulación de Archivos y Directorios en el Servidor

//definimos el path de acceso$path="mi/camino/";

//instanciamos el objeto$dir=dir($path);

//Mostramos las informacionesecho "Directorio ".$dir->path.":<br><br>";

while ($elemento = $dir->read()){echo $elemento."<br>";}

//Cerramos el directorio$dir->close();

Manipulación de Archivos y Directorios en el Servidor

<?php///rename(path_origen, path_destino); Renombra un archivo.

//Ejemplo:

$newname ="E:\sitios\cursophp\unidad_6\ejercicio_55.txt";rename("E:\sitios\cursophp\unidad_6\ejercicio_5.txt","$newname");?>

Manipulación de Archivos y Directorios en el Servidor

unlink(path_a_borrar); Elimina un archivo.

rmdir(directorio_a_borrar); Elimina un directorio (debe estar vacío)

mkdir(path_a_crear); Crea un directorio Nuevo.

copy(path_origen, path_destino); Copia un archivo o varios.

Manipulación de Archivos y Directorios en el Servidor

Ejercicio 6:

Subir un Archivo a una ruta especifica del equipo

Manipulación de Archivos y Directorios en el Servidor

Ejercicio 6:

<body><form action="<?=$PHP_SELF?>" method="post" enctype="multipart/form-data" name="form1"> <p align="center">Archivo <input name="archivo" type="file" id="archivo"> </p> <p align="center"><input name="boton" type="submit" id="boton" value="Enviar"></p></form> </body>

Manipulación de Archivos y Directorios en el Servidor

<?php$path = "E:/sitios/cursophp/unidad_6/";

if($boton) { if (is_uploaded_file($HTTP_POST_FILES['archivo']['tmp_name'])) { echo "origen--->" . $HTTP_POST_FILES['archivo']['tmp_name'] . "<br>" ; echo "Destino--->" . $path . $HTTP_POST_FILES['archivo']['name'] . "<br>" ; copy($HTTP_POST_FILES['archivo']['tmp_name'], $path . $HTTP_POST_FILES['archivo']['name']); $subio = true; }if($subio) { echo "El archivo subio con exito";} else { echo "El archivo no cumple con las reglas establecidas";}die();}?>

Manipulación de Archivos y Directorios en el Servidor

Lo primero que tenemos es un bloque if que detecta si se envió

el formulario, para esto preguntamos si la variable $boton esta

presente, si esta presente quiere decir que se envió el

formulario entonces entramos en el segundo if que comprueba

que se haya enviado algún archivo, si se envió el archivo se

copia (copy) desde el directorio temporario donde subió al lugar

donde queremos alojarlo, en este caso al mismo directorio del

script PHP.

Manipulación de Archivos y Directorios en el Servidor

Si todo salió bien se establece la variable $subio a true para

que luego sepamos que mensaje mostrarle al usuario "El

archivo subio con éxito" o "El archivo no cumple...".

Manipulación de Archivos y Directorios en el Servidor

Que es el $HTTP_POST_FILES ?

Seguro que observaron que esta variable aparece muy seguido en nuestro script, la misma es una variable del tipo matriz (array) predefinida de PHP que contiene la información del archivo que estamos subiendo, por ejemplo...

$HTTP_POST_FILES['archivo']['tmp_name'] - Guarda la ruta donde esta alojado temporalmente el archivo.

$HTTP_POST_FILES['archivo']['name'] - Guarda el nombre del archivo (ej: "dibujo.gif").

Manipulación de Archivos y Directorios en el Servidor

Que es el $HTTP_POST_FILES ?

Para solucionar esto utilizaremos el $HTTP_POST_FILES que contiene mas información del archivo enviado, veamos... $HTTP_POST_FILES['archivo']['size'] – Devuelve el tamaño del archivo (ej: 25445)

$HTTP_POST_FILES['archivo']['type'] – Devuelve el tipo de archivo.(ej: image/gif)

Manipulación de Archivos y Directorios en el Servidor

<?php //Este script restringe la subida a archivos GIF menores a 80k, if($boton) {    if (is_uploaded_file($HTTP_POST_FILES['archivo']['tmp_name'])) {      if($HTTP_POST_FILES['archivo']['size'] < 85000) {        if($HTTP_POST_FILES['archivo']['type']=="image/gif") {            copy($HTTP_POST_FILES['archivo']['tmp_name'], $HTTP_POST_FILES['archivo']['name']);            $subio = true;      }    } }   if($subio) {       echo "El archivo subio con exito";    } else {       echo "El archivo no cumple con las reglas establecidas";    }    die(); } ?>