Foros del Web » Programando para Internet » PHP »

Problemas al extraer imagen de una base de datos

Estas en el tema de Problemas al extraer imagen de una base de datos en el foro de PHP en Foros del Web. buenas tardes soy nuevo en programacion en php, tome este codigo de internet se inserta bien la imagen, deseo insertar una imagen en una base ...
  #1 (permalink)  
Antiguo 29/08/2010, 13:35
 
Fecha de Ingreso: agosto-2010
Mensajes: 2
Antigüedad: 13 años, 7 meses
Puntos: 0
Problemas al extraer imagen de una base de datos

buenas tardes soy nuevo en programacion en php,
tome este codigo de internet
se inserta bien la imagen,
deseo insertar una imagen en una base de datos con php
y luego extraerla
pero al momento de extraerla me sale una X rojo
e probado con diferentes codigos, pero igual
si alguien me puede ayudar se lo agradeceria,
dejo el codigo que utilizo


*************fotos.php***********************

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Documento sin título</title>
</head>

<body>
<FORM ENCTYPE="multipart/form-data" ACTION="g_fotos.php" METHOD="post">
#con este input "oculto" establecemos el limite máximo
# del tamaño del fichero a transferir. En este ejemplo 350.000 bytes
<INPUT type="hidden" name="lim_tamano" value="350000">
<p>Selecciona la imagen a transferir<br>
<INPUT type="file" name="foto"><br>
<p>Título la imagen<br>
<INPUT type="text" name="titulo"><br></p>
Expediente: <input type="text" name="expediente" size="15" value="">
<p><INPUT type="submit" name="enviar" value="Aceptar"></p>
</FORM>
</body>
</html>
**********g_fotos.php******************
<body>
<?PHP
$expediente=$_POST['expediente'];
$foto_name= $_FILES['foto']['name'];
$foto_size= $_FILES['foto']['size'];
$foto_type= $_FILES['foto']['type'];
$foto_temporal= $_FILES['foto']['tmp_name'];
$lim_tamano= $_POST['lim_tamano'];
$foto_titulo= $_POST['titulo'];
/* limitamos los formatos de imagen admitidos a:
png que segun del navegador que ulicemos puede ser:
en IE image/x-png en Firefox y Mozilla image/png
jpg que puede tener como tipo
en IE image/pjpeg en Firefox y Mozilla image/jpeg
gif que tiene como tipo image/gif en todos los navegadores
Mira los comentarios al margen sobre la variable $extensión */
if ($foto_type=="image/x-png" OR $foto_type=="image/png"){
$extension="image/png";
}
if ($foto_type=="image/pjpeg" OR $foto_type=="image/jpeg"){
$extension="image/jpeg";
}
if ($foto_type=="image/gif" OR $foto_type=="image/gif"){
$extension="image/gif";
}
# condicionamos la inserción a que la foto tenga nombre,
# un tamaño distinto de cero y menor de límite establecido
# en el formulario y que la variable extensión sea no nula

if ($foto_name != "" AND $foto_size != 0
AND $foto_titulo !='' AND
$foto_size<=$lim_tamano AND $extension !=''){
/*reconversion de la imagen para meter en la tabla
abrimos el fichero temporal en modo
lectura "r" binaria"b"*/
$f1= fopen($foto_temporal,"rb");
#leemos el fichero completo limitando
# la lectura al tamaño de fichero
$foto_reconvertida = fread($f1, $foto_size);
#anteponemos \ a las comillas que pudiera contener el fichero
# para evitar que sean interpretadas como final de cadena
$foto_reconvertida=addslashes($foto_reconvertida);
# abrimos la base de datos y escribimos las intrucciones de inserción
# en el campo BLOB insertaremos la foto_reconvertida
$base="rinconastur";
//$imagen="fotos";
//$conexion=mysql_connect ("localhost","pepe","pepa");
//mysql_select_db ($base, $conexion);
//establece una conexión con la base de datos.
$conexion = mysql_connect("localhost","veterin3","04091975")
or die("Could not connect to database!");
mysql_select_db("veterin3_prueba")
or die("Could not select database!"); // tu_bd es el nombre de la Base de datos .. por siaca.
$query = "insert into `imagen` (`num_ident`,`expediente`,`imagen2`, `nombre`, `tamano`, `formato`) VALUES ('', '$expediente','$foto_reconvertida', '$foto_titulo', '$foto_size', '$extension')";
$result = mysql_query($query)
or die("ERROR AL INSERTAR REGISTRO:$query");
//$meter="INSERT INTO ".$imagen;
//$meter .=" (num_ind, imagen, nombre, tamano, formato) ";
//$meter .=" VALUES('','$foto_reconvertida','$foto_titulo',";
//$meter .= "$foto_size, '$extension')";
// if (@mysql_query($meter,$conexion)){
// print "Foto guardada en la tabla";
// }else{
// print "Ha habido un error al guardar la foto";
// }
}else{
echo "<h2>No ha podido transferirse el fichero</h2>";
}
mysql_close();
?>

</body>
</html
EN ESTE CODIGO ES EL QUE USO PARA EXTRAER LA FOTO

***********leerf.php********************
<body>
<?PHP
//$base="rinconastur";
//$tabla="fotos";
$link = mysql_connect("localhost","veterin3","04091975")
or die("Could not connect to database!");
mysql_select_db("veterin3_prueba")
or die("Could not select database!"); // tu_bd es el nombre de la Base de datos .. por siaca.

$resultado = mysql_query ("select * from imagen ")
or die ("No se pudo ejecutar la consulta1");
//$conexion=mysql_connect ("localhost","pepe","pepa");
//mysql_select_db ($base, $conexion);
//$sacar = "SELECT * FROM ".$tabla;
//$resultado = mysql_query($sacar,$conexion);
?>
<?PHP
while ($registro = mysql_fetch_array($resultado)){
print "<center>Titulo de la imagen: ".$registro['nombre']."<br>";
// echo '<img src="'.$registro['imagen2'].'"></img>';

print "<img src='http://www.veterinariagutierrez.com/ver_foto.php?n=".$registro['num_ident']."'><br></img>";
print "Tamaño de la imagen: ".$registro['tamano']." bytes</center>";

}
mysql_close();
?>
</body>
</html>
******************ver_foto.php*****************
<?
$id=$_REQUEST['n'];
//$numero=$_POST['n'];
//$base="rinconastur";
//$tabla="fotos";

echo "EXPEDIENTE2:". $numero . "<br>";
$link = mysql_connect("localhost","veterin3","04091975")
or die("Could not connect to database!");
mysql_select_db("veterin3_prueba")
or die("Could not select database!"); // tu_bd es el nombre de la Base de datos .. por siaca.

$resultado = mysql_query ("select * from imagen WHERE num_ident=$id ")
or die ("No se pudo ejecutar la consulta");

//$conexion=mysql_connect ("localhost","pepe","pepa");
//mysql_select_db ($base, $conexion);
// $sacar = "SELECT * FROM ".$tabla." WHERE (num_ident=$numero)" ;
//$resultado = mysql_query($sacar,$conexion);
while ($registro = mysql_fetch_array($resultado)){
$tipo_foto=$registro['formato'];
$tipo_foto=$rw['mime'];
header("Content-type: $tipo_foto");
//echo '<img src="' . $registro['imagen2'] . '"/>';
// echo <img src="http://localhost/" . $registro['imagen'] . >;


echo $registro['imagen2'];


}
mysql_close();
?>
  #2 (permalink)  
Antiguo 29/08/2010, 18:41
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 8 meses
Puntos: 1532
Respuesta: Problemas al extraer imagen de una base de datos

ver_foto.php devuelve el binario de una imágen, es decir, la dumpea a la salida, por lo tanto hacer echo la corrompe y el navegador no la puede decodificar.

echo "EXPEDIENTE2:". $numero . "<br>"; //debes eliminar esta línea entre otras que impriman a la salia del script

Etiquetas: extraer
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:32.