Manipulación de Archivos y Directorios en el Servidor Temas: Creación, lectura, escritura, borrado...
-
Upload
nieves-ruiz-carrizo -
Category
Documents
-
view
228 -
download
2
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(); } ?>