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

24
Manipulación de Archivos y Directorios en el Servidor Temas: • Creación, lectura, escritura, borrado de archivos y directorios

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

Page 1: 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

Temas:

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

Page 2: 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.

Page 3: 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

Funciones de gestión de archivos:

Page 4: 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

Modos de apertura de archivos:

Page 5: 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

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>

Page 6: 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

<?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;

}

Page 7: 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

//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;

?>

Page 8: 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

Ejemplo 2: Actualizar un contador en un archivo

Page 9: 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

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";

}

Page 10: 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

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);

}

Page 11: 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

Funciones de gestión de directorios

Page 12: 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

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);

Page 13: 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

Métodos de la clase dir:

Page 14: 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

//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();

Page 15: 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

<?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");?>

Page 16: 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

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.

Page 17: 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

Ejercicio 6:

Subir un Archivo a una ruta especifica del equipo

Page 18: 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

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>

Page 19: 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

<?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();}?>

Page 20: 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

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.

Page 21: 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

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...".

Page 22: 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

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").

Page 23: 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

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)

Page 24: 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

<?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(); } ?>