Foros del Web » Programando para Internet » PHP »

Mostrar imagen guardada en MySQL

Estas en el tema de Mostrar imagen guardada en MySQL en el foro de PHP en Foros del Web. Necesito ayuda, lo he intentado casi todo, porque supongo que tendra respuesta. Tengo una imagen guardada en Mysql con mediumblod, eso si lo hace bien. ...
  #1 (permalink)  
Antiguo 28/02/2008, 01:35
 
Fecha de Ingreso: enero-2008
Mensajes: 4
Antigüedad: 16 años, 2 meses
Puntos: 0
Mostrar imagen guardada en MySQL

Necesito ayuda, lo he intentado casi todo, porque supongo que tendra respuesta.
Tengo una imagen guardada en Mysql con mediumblod, eso si lo hace bien. Pero al querer mostrarla no saca la foto sino un monton de simbolos.
He intentado con el header(content-type: image/pjpeg); ya que la foto es de ese formato, pero nada de nada. pongo los codigos usados y haber quien puede ayudar

// form.php

<?
echo '<font size=1>';
echo '<center>';
echo '<form enctype="multipart/form-data" action="guardararchivo.php" method="post">';
echo 'Foto <br><input type="file" name="foto">';
echo '<br><br>';
echo 'Equipo<br><input type="text" name="ideq"><br><br>';
echo 'Descripción<br><input type="text" name="descrip"><br><br>';
echo '<input type=hidden name=max_file_size value=1000000>';
echo '<input type="submit" value="Enviar archivo">';
echo '</form>';
echo '<br><br><a href=descargar_archivo.php>Ver album</a>';
?>

// guardar_archivo.php

$conexion=mysql_connect($servidor,$nombre,$clave);
$res=mysql_select_db("xxx",$conexion);
if ( $conexion > 0 )
{
$archivo = $_FILES["foto"]["tmp_name"];
$tamanio = $_FILES["foto"]["size"];
$tipo = $_FILES["foto"]["type"];
$nombre = $_FILES["foto"]["name"];
if ( $archivo != "none" )
{
$fp = fopen($archivo, "rb");
$contenido = fread($fp,$tamanio);
$contenido = addslashes($contenido);
fclose($fp);
$query = "INSERT INTO foto_foto VALUES null,'".$ideq."','".$descrip."','".$contenido."')" ;
mysql_query($query);
if(mysql_affected_rows($conexion) > 0)print "Se ha guardado e la bd.";
else print "NO se ha podido guardar el archivo en la bd.";
}
else print "No se ha podido subir el archivo al servidor";
}else{echo 'No conectado';}

?>
<HTML><SCRIPT>document.location='form.php';</SCRIPT></HTML>

//descargar_archivo.php

$eq=$_GET['id_eq'];
$query = "SELECT descrip,foto_grande,tipo FROM foto_foto where ideq=".$eq;
$res2 = mysql_query($query);
$datos = mysql_fetch_array($res2);

//el nombre de la foto
$foto= $datos[0];

// La imagen
$imagen = $datos[1];

// tipo de imagen "imagen/pjpeg"
$tipo=$datos[2];

header("Content-Type: $tipo");
echo $imagen;
?
  #2 (permalink)  
Antiguo 28/02/2008, 09:29
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Re: Mostrar imagen guardada en MySQL

Como llamas a tu script descargar_archivo.php?, recuerda que para mostrar la imagen debes de hacerlo vía:
Código HTML:
<img src="descargar_archivo.php?id=1" border="0" /> 
Saludos.
  #3 (permalink)  
Antiguo 29/02/2008, 11:49
 
Fecha de Ingreso: enero-2008
Mensajes: 4
Antigüedad: 16 años, 2 meses
Puntos: 0
Busqueda Re: Mostrar imagen guardada en MySQL

Gracias, por responderme, pero no se si me he explicado mal, lo intento otra vez

// Tengo una tabla llamada foto_foto
// con los siguientes campos

ideq tinyint(4) not null primary key
descrip varchar(30) null
foto_grande mediumblod null
tipo varchar(40)

//ya tengo una foto introducida, o sea, guardararchivo.php funciona bien
// es decir, tengo una foto guardada en MySQL como se muestra

ideq descrip foto_grande tipo
10 foto.jpg [BLOB - 27.1 KB] image/pjpeg

// hasta aqui bien. He incluso funciona en local al mostrar, pero en el servidor
// al descargar_archivo muestra un monton de simbolos.

// pero es más teniendo ya la foto en MySQL como se ve arriba, y ejecuto directamente
// solo el script imagen.php con el codigo siguiente,


// imagen.php //

<?php
$conexion=mysql_connect($servidor,$nombre,$clave);
$res=mysql_select_db("album",$conexion);

$query = "SELECT descrip,foto_grande,tipo FROM foto_foto where ideq=10";
$res2 = mysql_query($query);
$datos = mysql_fetch_array($res2);
//el nombre de la foto
$foto= $datos[0];
// La imagen
$imagen = $datos[1];
// tipo de imagen "imagen/pjpeg"
$tipo=$datos[2];

header("Content-Type: $tipo");
echo $imagen;
?>

// sigue saliendo lo mismo, un monton de simbolos.
// ahora la pregunta de nuevo ¿Porque no muestra la imagen?, por lo que se ve, toma la imagen como codigo no como imagen.
¿Que esta mal?, falta codigo?,
  #4 (permalink)  
Antiguo 01/03/2008, 16:24
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Re: Mostrar imagen guardada en MySQL

Esta muy raro es como si no reconociera la funcion header, prueba lo siguiente:
Código PHP:
<?php
$conexion
=mysql_connect($servidor,$nombre,$clave)  or die( mysql_error() );
$res=mysql_select_db("album",$conexion) or die( mysql_error() );

$query "SELECT descrip,foto_grande,tipo FROM foto_foto where ideq=10";
$res2 mysql_query($query) or die( mysql_error() );
$datos mysql_fetch_array($res2);
//el nombre de la foto
$foto$datos[0];
// La imagen
$imagen $datos[1];
// tipo de imagen "imagen/pjpeg"
$tipo=$datos[2];

echo 
"Tipo de imagen: $tipo";
echo 
"Nombre de la foto: $foto";

if( 
headers_sent() )
      die( 
"Cabeceras ya enviadas!" );

header("Content-Type: $tipo");
echo 
$imagen;
?>
Y verifica que te imprima los datos correctos del tipo de imagen.

Saludos.
  #5 (permalink)  
Antiguo 01/03/2008, 16:36
 
Fecha de Ingreso: enero-2008
Mensajes: 4
Antigüedad: 16 años, 2 meses
Puntos: 0
Re: Mostrar imagen guardada en MySQL

Muchas gracias, por la información.
La verdad es que sin añadir el headers_sent(), para verificar, ya me funciona. Y como casi siempre no se explica el porque,
con el codigo este funciona, tan solo modifique al principio del script unos require_once y include, y comenzo a funcionar, ¿?. No me preguntes porque pero gracias, me has ayudado mucho
  #6 (permalink)  
Antiguo 01/03/2008, 17:25
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Re: Mostrar imagen guardada en MySQL

Es muy probable que en alguna parte de esos includes estuvieras enviando una linea en blanco, con lo que las cabeceras se enviaban, y de seguro tienes tu PHP en show_erros = Off por eso no veias el error.

Saludos.
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.
Tema Cerrado

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 17:03.