Foros del Web » Programando para Internet » PHP »

uso de header apropiado

Estas en el tema de uso de header apropiado en el foro de PHP en Foros del Web. hola amigos, tengo un problem con el uso de los headers. Uso como Bd interbase (el cual es malisimo) y al querer descargar un archivo ...
  #1 (permalink)  
Antiguo 13/04/2004, 14:18
 
Fecha de Ingreso: abril-2004
Ubicación: Viña del Mar
Mensajes: 16
Antigüedad: 19 años, 11 meses
Puntos: 0
uso de header apropiado

hola amigos, tengo un problem con el uso de los headers. Uso como Bd interbase (el cual es malisimo) y al querer descargar un archivo me da serios problemas, porque lo hago en forma directa de la BD. El codigo que uso es el siguiente:

Header("Content-type: ".$mime_archivo);
Header("Content-Disposition: attachment; filename=".$nombre_archivo);
ibase_blob_echo($blob);

con esto el navegador me envia el cuadro de "descarga bla bla bla", y le presiono guardar y niun problema. El gran problema ocurre cuando le presiono abrir, porque me dice que no encuentra el archivo ¿raro no?, si le quito el Header("Content-Disposition: attachment; filename=".$nombre_archivo"]); me abre el archivo en forma directa sin problemas, entonces el archivo si existe, asumo que el header es el del problema. Cual header debo sustituir el antes mensionado?.

Para aquellos que se pregunten porque no uso print para enviar el archivo, es porque el navegador no lo lee, interbase es bastante exquisito para sus cosas.

Y otra cosa, el php que uso es medio viejo, la versión es la 4.0.3 pl 1-1. Y el IE es el 6 (ya que con el 5 tuve que mandarle una trampita en el php).
  #2 (permalink)  
Antiguo 13/04/2004, 14:43
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 2 meses
Puntos: 129
No sé si $nombre_archivo es el nombre del archivo con ruta o sin ella, pero lo ideal es quedarse con el nombre del archivo sólo (sin ruta) para componer el "content-disposition" ... por eso es recomendable usar basename() para esa operación.

Código PHP:
Header("Content-Disposition: attachment; filename=".basename($nombre_archivo)); 
De todas formas . esto no te asegura que deba funcionar ... las cabeceras HTTP son standars pero no todos los navegadores las interpretan de la misma forma ni entre versiones de los mismos.

Hay gente que usa como "content-type" un application/force-download o algo así entre otras cosas.

Revisa la documentación de header() y lee sus comentarios de los usuarios .. suelen indicar más cabeceras o "peculiaridades" de ciertos navegadores.

Otra cosa que puede influir sobre el tema es si usas sesiones en es script. Las sesiones normalmente envian sus própias cabeceras HTTP .. estas podrían dar problemas (creo recordar que algo hablan del tema en los comentarios de los usuarios de header() o las funciones de sesiones en www.php.net).

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #3 (permalink)  
Antiguo 13/04/2004, 14:51
 
Fecha de Ingreso: abril-2004
Ubicación: Viña del Mar
Mensajes: 16
Antigüedad: 19 años, 11 meses
Puntos: 0
gracias, en realidad manda solo el nombre, pero intentaré hacerlo como tu dices. Bueno uso sesiones, pk el sistema es de e-learning, ¿como serian esas cabeceras propias que usan las sesiones?. Revisaré la documentación en php.net, porque estuve viendo y en realidad no encontre respuesta a mi problema. Gracias!
  #4 (permalink)  
Antiguo 13/04/2004, 15:02
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 2 meses
Puntos: 129
Por aquí hablan del tema en el manual (ver comentarios de los usuarios):

http://www.php.net/manual/en/functio...he-limiter.php
http://www.php.net/manual/en/function.header.php

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #5 (permalink)  
Antiguo 13/04/2004, 15:55
 
Fecha de Ingreso: abril-2004
Ubicación: Viña del Mar
Mensajes: 16
Antigüedad: 19 años, 11 meses
Puntos: 0
gracias!!
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 14:28.