Foros del Web » Programando para Internet » PHP »

Peticion de consejos acerca de generacion de archivos

Estas en el tema de Peticion de consejos acerca de generacion de archivos en el foro de PHP en Foros del Web. Buenas tardes a todos, os cuento lo que estoy intentando hacer, a ver si podeis guiarme un poco sobre este tema. Estoy añadiendo funcionalidades a ...
  #1 (permalink)  
Antiguo 27/09/2005, 10:09
 
Fecha de Ingreso: octubre-2003
Mensajes: 40
Antigüedad: 20 años, 6 meses
Puntos: 0
Pregunta Peticion de consejos acerca de generacion de archivos

Buenas tardes a todos,

os cuento lo que estoy intentando hacer, a ver si podeis guiarme un poco sobre este tema. Estoy añadiendo funcionalidades a una aplicacion web que permite hacer tests entre otras cosas, y los almacena como datos en una base de datos mysql. Lo que pretendo hacer es añadir una funcion que permita exportar esos datos como paginas HTML (con sus respectivas imagenes almacenadas en otra subcarpeta). Es decir, tendria que hacer consultas a la BD, e ir generando archivos HTML, con enlaces a las imagenes (si hay alguna), comprimirlo en un zip, y exportarlo al usuario q lo pida.

Como podria ser una manera de hacerlo?, existe algun paquete o alguna funcion de PHP que me ayude en el proceso?, la unica manera seria abrir un archivo nuevo de salida, e ir hacien "echo", con las sentencias HTML correspondientes?

Muchas Gracias y un saludo.
  #2 (permalink)  
Antiguo 27/09/2005, 10:34
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Pero .. tu ya generas tu página HTML como salida dinámicamente con PHP? ..

Si es así, puedes capturar su salida .. es decir .. usar las mismas rutinas que usas para verla pero capturando su salida para generar un zip y entregarlo a descargar o directamente a descargar (sin zip) .. El tema de las imagenes podrías "recolectarlas" para incluirlo en tu zip .. pero antes deberías "parsear" tu HTML obtenido para identificar sus URL (de los tag's de HTML de imagen) y así ir incluyendolas en tu zip .. además de cambiar el URL que apunten en el HTML para el Zip generado (si es que tuviesen links relativos tipo: http://www.tal.tal/imagenes/nose.tal).

Un saludo,
  #3 (permalink)  
Antiguo 27/09/2005, 11:24
 
Fecha de Ingreso: octubre-2003
Mensajes: 40
Antigüedad: 20 años, 6 meses
Puntos: 0
Hola CLuster,

pues existe una parte en la que se puede hacer un preview del test, pero es un poco feo. El tema seria como 'capturar', esa salida como me dices, y escribirla en un archivo .html. Existe alguna clase o libreria que te permita generar archivos html facilmente.

Por cierto, a que te refieres con 'parsear' el html?


Un saludo.
  #4 (permalink)  
Antiguo 27/09/2005, 12:01
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Supuestamente es ese "preview" el que vas a generar como HTML estático y ofrecerlo para descargar? .. En resumen .. podrías llamar exactamente a esa misma rutina para generar tu HTML con el formato que ya usas.

Si es así, las funciones que debes usar son del control del buffer de salida de PHP.

Código PHP:
<?
ob_start
()
include(
"ese_Código_que_genera_el_previo");
$html=ob_get_contents();
ob_end_flush();
// Ya tienes en $html toda la salida generada por la ejecución de ese script PHP .. 
?>
Revisa: www.php.net/ob_start y afines.

En ese punto .. si el objetivo es entregar eso a descarga (faltaría las imagenes) puedes generar cabeceras HTTP directas para inciciar la descarga:

Revisa la función header()
www.php.net/header

Si quieres generar un .zip .. puedes usar esta classe:
http://www.phpclasses.org/browse/package/2322.html

"Parsear" significa evaluar ese "texto" (que es en el fondo lo que será la lectura de tu "html") identificar bajo un patrón dado donde están tus imagenes (<a img="xxxx">) y de ahí extraer todo para quedarte sólo con lo que cumpla ese patrón dado.

Esto lo realizaras con funciones de Expresiones regulares (que no son mi fuerte).

El "generador de HTML" no sé a que te refieres .. Si buscas en sitios como www.phpclasses.org podrás encontrar ayudas para generar tablas HTML fácilemnte (enviando a la función unos pocos parámetro y el trabajo duro lo hará esa classe), y así muchas más ..

Un saludo,
  #5 (permalink)  
Antiguo 27/09/2005, 22:36
 
Fecha de Ingreso: octubre-2003
Mensajes: 40
Antigüedad: 20 años, 6 meses
Puntos: 0
Muchas Gracias Cluster, me voy a poner con ello a ver si lo he entendido bien. Ya te contaré. Muchas gracias de nuevo.

Un saludo.
  #6 (permalink)  
Antiguo 06/10/2005, 08:50
 
Fecha de Ingreso: octubre-2003
Mensajes: 40
Antigüedad: 20 años, 6 meses
Puntos: 0
De acuerdo

Me funciona cojonudamente, muchas gracias.

Lo que me mosquea es que para enviar el archivo uso :

header('Content-Disposition: attachment; filename="examen.html"');
readfile('../tmp/examn.html');

y he leido en la pagina .php, que con algunos navegadores no funciona esa cabecera.

¿me recomiendas hacer de otra manera el envio de archivos desde el server?

Un Saludo y muchas gracias.
  #7 (permalink)  
Antiguo 06/10/2005, 11:21
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Si, es cierto .. la cabecera HTTP "attachment" algunos navegadores por no cumplir los standares que dicatan las RFC's correspondientes al protocolo HTTP no interpretan que deben "forzar" la descarga de lo que se le envia.

En los mismos comentarios de los usaurios de php.net (header()) veras que muchos identifican el navegador y en consecuencia le envian las cabeceras HTTP más adecuadas (phpMyadmin por ejemplo lo hace así por poner un caso).

Un saludo,
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 10:15.