La Web del Programador: Comunidad de Programadores
 
    Pregunta:  65218 - ERROR HEADER( "CONTENT-TYPE: IMAGE/JPEG")
Autor:  spidy spidy
hola tengo un error con la siguiente liena header("Content-type: image/jpeg") he leido en multitud de foro cosas sobre esto pero ninguna funciona, explico mi caso yo quiero visualizar unas fotos de la base de datos. en el archivo principal tengo el siguiente codigo.

<?php
inlcude("funciones.php");
print listar('[email protected]');
?>

y el archivo de funciones.php contiene estas funciones.

<?php
function listar($usuario){
$conexion=Conectarse();
$qry="select
docs.*,
CASE docs.tipo
WHEN 'image/png' then
'image'
WHEN 'image/jpg' then
'image'
WHEN 'image/gif' then
'image'
WHEN 'image/jpeg' then
'image'
ELSE
'file'
END as display
from fotos AS docs where usuario='$usuario'";

//EJECUTAMOS LA CONSULTA
$res=mysql_query($qry) or die("Query: $qry ".mysql_error());
//RECORREMOS LA CONSULTA
while ($obj=mysql_fetch_object($res)) {
//SI EL TIPO DE DOCUMENTO ES UMAGEN LA MOSTRAMOS SI NO SOLO HACEMOS EL LINK
switch ($obj->display){

case "image":
$img=getFile($usuario, $obj->id_documento);
echo "<div>
<img src='$img' alt='$obj->titulo' />
</a>
</div><hr />";
break;
/*case "file":
echo "<div>
<a href='getfile.php?id_documento={$obj->id_documento}'>$obj->titulo</a>
</div><hr />";
break; */
}
}
}

function getFile($usuario,$idDocumento){
$conexion=Conectarse();
$qry="Select * from fotos where id_documento=$idDocumento and usuario='$usuario'";
$res=mysql_query($qry) or die(mysql_error()." qry::$qry");
$obj=mysql_fetch_object($res);

//OBTENEMOS EL TIPO MIME DEL ARCHIVO ASI EL NAVEGADOR SABRA DE QUE SE TRATA
header("Content-type: {$obj->tipo}");

//OBTENEMOS EL NOMBRE DEL ARCHIVO POR SI LO QUE SE REQUIERE ES DESCARGARLO
//header('Content-Disposition: attachment; filename="'.$obj->nombre_archivo.'"');

//Y PO ULTIMO SIMPLEMENTE IMPRIMIMOS EL CONTENIDO DEL ARCHIVO
return $obj->contenido;

}
?>

  Respuesta:  xve
Hola, el problema esta en que no puedes modificar el header de una misma pagina varias veces, y menos modificarlo una vez ha mostrado datos en la pantalla con otro header...
Para ello, la solucion pasa por llamar a otra pagina en el tag <img>

Algo asi:
<img src="getFile.php?idDoc=$idDocumento">

En el archivo getFile.php, haces lo mismo que tienes en la funcion getFile.

Aqui tienes un buen ejemplo: http://www.lawebdelprogramador.com/codigo/PHP/70-Guardar_y_mostrar_una_imagen_de_una_base_de_datos_MySQL.html