Ver Mensaje Individual
  #2 (permalink)  
Antiguo 19/09/2006, 20:39
Cluster
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 4 meses
Puntos: 129
Cita:
Como extraer el contenido de un archivo y dejarlo en pantalla. En este caso se usa el ftp_get y luego se abre con un fopen? Agradesco de antemano el comentario, gracias.
Cuando hablas de "pantalla" mejor refierete a "entregarlo al navegador" o visuarlizarlo en la ventana del navegador .. (así nos aclararemos todos que estás usando PHP en entorno "web" y no por ejemplo bajo PHP-GTK .. por qué eso de "pantalla" me trajo recuerdos de aplicaciones de "escritorio").

El proceso de "visualización" de un archivo en tu navegador se hace principalmente enviando las cabeceras HTTP al cliente para que este interprete los datos como el tipo que són.

Por ende, te hace falta en tu proceso vários pasos:

1) Si te conectas por FTP (protocolo) .. en tu caso te "traes" a tu servidor el archivo, pero a una variable. NO guardarlo como archivo.

Esto sería lo ideal, .. no soy usuario habitual de las funcioens de ftp de PHP así que desconozco si hay función para hacer un "get" pero como un "string".

Si no existe .. si, con un ftp_get() te traes tu archivo a un directorio "temporal" en tu aplicación (servidor). Digo temporal por qué de alguna manera esos archivos en tu servidor no te interesan .. así que tendrás que implementar alguna funcionalidad para eliminar esos archivos cuando ya no lo necesites.

2) Obtienes el formato MIME del archivo (datos)
Lo podrías deducir en función de la extensión del archivo (no muy serguro). También lo puedes obtener con la función:

mime_content_type()
http://www.php.net/manual/es/ref.mime-magic.php

3) Compones las cabeceras HTTP adecuadas para indicar al cliente que los datos que envias son de tal formato (y otras propiedades sobre el archivo, incluido que lo quieres ver "en línea")

Con la función de PHP header() envias cabeceras HTTP. Que cabecera HTTP necesitas (o cuales) es parte del protocolo PHP.

En principio y como mínimo deberías usar:


Código PHP:
// Enviaremos un PDF. application/pdf es el formato MIME del archivo que tendrás que obtener antes.
header('Content-type: application/pdf');

// Indica el nombre del archivo igual al original ...
header('Content-Disposition: inline; filename="nombre.ext"'); 
4) Entregas el dato (tu archivo que ya lo tienes en una variable) al buffer de salida de PHP.

Si tienes el archivo físico, con readfile() haces todo el proceso: leerlo y entregarlo al buffer de salida de PHP. Tu navegador intentará interpretar el archivo en función de sus cabeceras enviadas. Depende del tipo de archivo y si ese navegador en cuestión dispone del plug-in adecuado, así vera el archivo o se le ofrecerá a descargar si no lo dispone.


Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.