Foros del Web » Programando para Internet » PHP »

Mostrar imagen con header()

Estas en el tema de Mostrar imagen con header() en el foro de PHP en Foros del Web. Hola! Estoy usando la funcion header para redireccionar con PHP y hasta para bajar archivos de la siguiente manera: header("Pragma: no-cache"); header("Cache-Control: no-store, no-cache, must-revalidate, ...
  #1 (permalink)  
Antiguo 14/01/2004, 08:18
 
Fecha de Ingreso: octubre-2003
Mensajes: 96
Antigüedad: 14 años, 2 meses
Puntos: 0
Información Mostrar imagen con header()

Hola!

Estoy usando la funcion header para redireccionar con PHP y hasta para bajar archivos de la siguiente manera:


header("Pragma: no-cache");
header("Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0");
header("Expires: 0");
header("Content-Transfer-Encoding: binary");
header("Content-Disposition: attachment; filename=$archivo");
header("Content-Length: $size");
readfile(USER_DIR.CURRENT_DIR . '/' .$archivo);

bueno, la cuestion es que se que se puede especificar que el archivo en cuestion es una imagen para forzar al navegador a mostrarla, pero no se como hacerlo.

Podrian ayudarme?
  #2 (permalink)  
Antiguo 14/01/2004, 08:46
 
Fecha de Ingreso: octubre-2003
Mensajes: 96
Antigüedad: 14 años, 2 meses
Puntos: 0
Ups, y lo hice, me la muestra todo :) de esta forma

header("Content-type: image/jpeg");
readfile($dirname.'/'.$archivo);

pero tengo otro problema.
Cuando doy con el botón derecho y hago click en bajar, no me respeta el nombre del archivo. :(

que tengo que agregar?
  #3 (permalink)  
Antiguo 14/01/2004, 08:58
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 15 años, 5 meses
Puntos: 16
Hola,

En otro mensaje creo que cambiaron:
Código PHP:
header("Content-Disposition: attachment; filename=$archivo"); 
por
Código PHP:
header("Content-Disposition: inline; filename=$archivo"); 
y creo que funciono.

Suerte.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #4 (permalink)  
Antiguo 14/01/2004, 09:01
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Puedes usar las mismas cabeceras .. pero el "attachment" en HTTP significa "adjunto" .. osesase, que ese archivo el navegador ha de entenderlo como "para descargar" .. Para eso usa: inline (ademas del content-type que especifica que es una imagen . mejor dicho el formato MIME que són esos datos que vas a enviar).

Código PHP:
<?
header
("Pragma: no-cache");
header("Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0");
header("Expires: 0");
header("Content-type: image/jpeg");
header("Content-Disposition: inline; filename=$archivo");
header("Content-Length: $size");

readfile(USER_DIR.CURRENT_DIR '/' .$archivo);
?>
Todo esto lo definen las RFC's de la normativa del protocolo HTTP (php sólo te pone a tu disposición la función "header()" para que envies esas cabeceras).

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 14/01/2004, 13:55
 
Fecha de Ingreso: octubre-2003
Mensajes: 96
Antigüedad: 14 años, 2 meses
Puntos: 0
Pues no :(

Me pone como nombre "sin titulo", y cree que la imagen es BMP
  #6 (permalink)  
Antiguo 14/01/2004, 15:10
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Pues depende del navegador que uses .. No todos reconocen las mismas cabeceras HTTP de la misma forma ..

Para que veas a alguien que le funciona:
http://www.forosdelweb.com/showthrea...hreadid=175196

(no indicó el navegador de sus pruebas .. pero si lo deseas se lo preguntas)

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
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 22:55.