Foros del Web » Programando para Internet » PHP »

Visualizar archivos

Estas en el tema de Visualizar archivos en el foro de PHP en Foros del Web. Buenas, tengo una base de datos en la que guardo el titulo, tipo y la ruta de ciertos documentos. Cuando voy a visualizar estos archivos ...
  #1 (permalink)  
Antiguo 04/06/2004, 01:55
Avatar de juavalga  
Fecha de Ingreso: marzo-2004
Ubicación: Valencia
Mensajes: 143
Antigüedad: 20 años, 1 mes
Puntos: 0
Visualizar archivos

Buenas, tengo una base de datos en la que guardo el titulo, tipo y la ruta de ciertos documentos.
Cuando voy a visualizar estos archivos con las extensiones .doc o .xls no tengo problemas pero por ejemplo con la extension .txt no me visualiza dicho archivo. Me aparece un cuadro de dialago de descarga de archivos con las opciones de Abrir-Guardar-Cancelar-Mas informacion. Tambien me pasa con comprimidos como zip o rar.
Pensaba que era problema de los tipos mime, pero en el fichero de configuracion esta correcto. "text/plain txt".
  #2 (permalink)  
Antiguo 04/06/2004, 07:07
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
¿y .. tu en tu código como "abres" ese archivo? .. lo "linkeas" simplemente (<a href ...>) o lo "lanzas" desde PHP (PHP abre el archivo y genera las cabeceras HTTP de content-type entre otras para entregar el archivo al navegador)?

Un saludo,
  #3 (permalink)  
Antiguo 06/06/2004, 15:21
Avatar de juavalga  
Fecha de Ingreso: marzo-2004
Ubicación: Valencia
Mensajes: 143
Antigüedad: 20 años, 1 mes
Puntos: 0
Pongo primero la cabecera "header" y luego lo lanzo desde PHP.
  #4 (permalink)  
Antiguo 08/06/2004, 07:09
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Pero .. "cómo?" .. (pon el código que usas) ..

Un saludo,
  #5 (permalink)  
Antiguo 09/06/2004, 01:21
Avatar de juavalga  
Fecha de Ingreso: marzo-2004
Ubicación: Valencia
Mensajes: 143
Antigüedad: 20 años, 1 mes
Puntos: 0
El codigo que utilizo es:

<?php
// Fichero donde nos conectamos a la BD
include("conexion.php");
$tit = $_GET["tit"];

$conexion = conectarse();

$result = mysql_query("SELECT * FROM documento WHERE titulo='$tit'");
$row = mysql_fetch_array($result);

$texto = "Documentos\\".$row["ruta"];
$tipo = mysql_result($result,0,"tipo");

header("Content-type: $tipo");
readfile($texto);

?>
  #6 (permalink)  
Antiguo 10/06/2004, 05:41
Avatar de juavalga  
Fecha de Ingreso: marzo-2004
Ubicación: Valencia
Mensajes: 143
Antigüedad: 20 años, 1 mes
Puntos: 0
Alguien puede darme alguna idea de que puedo hacer?????????

  #7 (permalink)  
Antiguo 10/06/2004, 16:10
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
pero ...

$tipo .. de donde sale su valor?

Lo guardas en tu BD como el MIME (formato) de ese archivo? .. si es así .. no veo donde lo sacas de tu BD ($row['tipo'] ?¿)

De todas formas, te hacen falta más cabeceras HTTP para "forzar" a tu navegador a que entienda que el dato que se le envia es para que lo intente visualizar siempre ..

Si mal no recuerdo una de tantas sería:
Código PHP:
header('Content-Disposition: inline; filename="' $nombre_archivo '"'); 
Revisa los ejemplos y comentarios de los usuarios de:
www.php.net/header

Un saludo,
  #8 (permalink)  
Antiguo 11/06/2004, 01:29
Avatar de juavalga  
Fecha de Ingreso: marzo-2004
Ubicación: Valencia
Mensajes: 143
Antigüedad: 20 años, 1 mes
Puntos: 0
En efecto la variable tipo tiene almacenada el tipo MIME del archivo. Lo coloco en la cabecera y despues leo el archivo y me funciona sin problemas para ciertas extensiones (doc,xls,pdf...)
Probare hechar un vistao a lo que me comentas para aquellas que no me funcionan.
Gracias por todo.
  #9 (permalink)  
Antiguo 11/06/2004, 06:50
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Ten presente también que NO todo navegador (cliente) se comporta igual ante las diferentes cabeceras HTTP que le envies. Pese que hay un standard (el protocolo HTTP y que lo define sus RFC's correspondientes) .. algunos navegadores (IE ¬¬ por ejemplo) no usa las standars ..

Así que la mayoría de veces "toca" averigüar el navegador (cliente) conectado al script para "lanzarle/enviarle" las cabeceras HTTP que le correspondand.

Un saludo,
  #10 (permalink)  
Antiguo 14/06/2004, 11:00
Avatar de juavalga  
Fecha de Ingreso: marzo-2004
Ubicación: Valencia
Mensajes: 143
Antigüedad: 20 años, 1 mes
Puntos: 0
¿Como puedo saber entonces que cabeceras debo de enviar para luego descargar correctamente el fichero?
Sabe rel navegador que utiliza el cliente esta claro, pero no el tipo de cabeceras que soporta cada navegador o cuales hay que enviarle.
  #11 (permalink)  
Antiguo 14/06/2004, 12:26
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
El archivo .. en sí .. lo subes tu "a mano" o lo sube PHP (vía HTTP)? ..

Si es así .. puedes leer el formato MIME del archivo cuando sube para almacenarlo como otro dato más de tu registros.

Si lo subes "a mano" (o no tiene control PHP cuando sube en sí) .. puedes usar otras funciones para leer el formato MIME del archivo (físico en tu sistema de archivos) pero depende de algo de configuración de PHP al respecto.

Indica cual es tu situación.

Un saludo,
  #12 (permalink)  
Antiguo 15/06/2004, 15:41
Avatar de juavalga  
Fecha de Ingreso: marzo-2004
Ubicación: Valencia
Mensajes: 143
Antigüedad: 20 años, 1 mes
Puntos: 0
Creo que ya lo habia comentado. Cuando guardo el archivo en la Base de Datos (mysql) guardo el titulo del archivo junto con el tipo MIME. Despues antes de visualizarlo mando el header y despues leo el archivo.
El problema lo tenia que archivos .txt no los podia visualizar, sin embargo otros si que podia (pdf, doc, xls).
El problema que tenia era que poder hacer para pode ver archivos txt.

Gracias por todo
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 23:32.