Sv Community El Salvador
Soporte y Tecnología => Programación => Web => Topic started by: Uchija Itachi on February 11, 2013, 11:23:01 pm
-
Muy buenas, pues acudo a ustedes pues porq no he logrado hacerlo funcionar.
Pues estoy haciendo un pequeño sistema en el cual me estan solicitando que las imagenes esten almacenadas en la base de datos, ya me hice el script en php para poder almacenar las imagenes en mysql, va chivo hasta ahi todo bien.
El problema lo tengo cuando necesito imprimir en pantalla desde php la imagen que tengo almacenada en en la base de datos.
Alguien ha hecho eso alguna vez?
se los agradeceria
-
que tipo de dato estas guardando Oo!? no has verificado eso Oo!? ... cuando hago algo para subir imagenes lo unico que he hecho es guardar el nombre de la de la imagen y la extensión, aveces tambien guardo la ruta si es algo como para guardar imagenes por usuarios.. la imagen solo la muevo a una carpeta :D asi no me complico aunque digan que hay desventajas vv ... para mostrar las la ruta es donde se guardan la imagenes yo la dejo estatica con la ruta o nombre guardado !
-
buscando tu situación encontre esto creo que asi lo estas haciendo tu espero que te sirva no he probado esto !!
http://ingeniuz.blogspot.com/2005/05/cmo-almacenar-una-imagen-en-mysql-sql.html
-
Muy buenas, pues acudo a ustedes pues porq no he logrado hacerlo funcionar.
Pues estoy haciendo un pequeño sistema en el cual me estan solicitando que las imagenes esten almacenadas en la base de datos, ya me hice el script en php para poder almacenar las imagenes en mysql, va chivo hasta ahi todo bien.
El problema lo tengo cuando necesito imprimir en pantalla desde php la imagen que tengo almacenada en en la base de datos.
Alguien ha hecho eso alguna vez?
se los agradeceria
¿Estas modificando los headers cuando respondes con la imágen?
Asumiendo que tu imágen está correctamente guardada como un BLOB en tu base de datos, tu respuesa debería ser algo así (en caso de una imagen tipo JPEG):
<?php
header('Content-Type: image/jpeg');
echo $imagen;
Notá que no utilizo ?> porque cualquier carácter que se vaya extra puede provocar que la imágen no se cargue. Con archivos binarios tenés que asegurarte de que lo único que se envíe al cliente es la imágen, un simple espacio o fín de línea puede provocar que el navegador te muestre un error al cargar la imágen
-
¿Estas modificando los headers cuando respondes con la imágen?
Asumiendo que tu imágen está correctamente guardada como un BLOB en tu base de datos, tu respuesa debería ser algo así (en caso de una imagen tipo JPEG):
<?php
header('Content-Type: image/jpeg');
echo $imagen;
Notá que no utilizo ?> porque cualquier carácter que se vaya extra puede provocar que la imágen no se cargue. Con archivos binarios tenés que asegurarte de que lo único que se envíe al cliente es la imágen, un simple espacio o fín de línea puede provocar que el navegador te muestre un error al cargar la imágen
en efecto el tipo de dato de la imagen es mediumblob, soy bastante nuevo usando php por lo tanto desconozcoibastantes cosas, aqui esta lo que estoy tratando de hacer: Primero trato de recuperar la imagen que guarde en la base de datos desde otro archivo PHP, con la imagen ya guardada trato de que el row pueda crear una secuencia de botones que dependiendo la cantidad de imagenes asi sera el numero de botones.
La tabla tiene datos id, nombre e imagen
<?php
$dbhost = "localhost";
$dbusuario = "root";
$dbpassword = "";
$lineBreak = 4;
$db = "alcaldia";
$conexion = mysql_connect($dbhost, $dbusuario, $dbpassword);
mysql_select_db($db, $conexion);
$sql=mysql_query("SELECT * FROM botonera",$conexion);
echo "<center>";
echo "<font size=40>Menu Principal</font>";
echo "<p/>";
echo "<br/>";
if ( mysql_num_rows ($sql)> 0)
{
echo "<table width=500 border=1 cellspacing=0>";
echo "<tr>"; // tr es la fila y td es la celda d la columna
for ($i=0 ; $i <= mysql_num_rows($sql); $i=$i+1)
{
while ($row = mysql_fetch_array ($sql))
{
$i++;
if ($i % $lineBreak == 0)
{
echo "<tr><p/></tr>";
echo "<td> <center><input type='image' style='font-size:20px; text-align:center' name='tipo' src='$row[imagen]' size=20/></center></td>";
} else
{
echo "<td> <center><input type='image' style='font-size:20px; text-align:center' name='tipo' src='$row[imagen]' size=20/></center></td>";
}
}
}
echo "</tr></table>";
echo "</center>";
}
?>
-
La forma que recuperas la imagen es incorrecta.
Debes usar algo asi:
<img src="recuperarimagen.php?id=5">
Luego en otro archivo recuperarimagen.php
Lo que te mencionaron...
<?php
header('Content-Type: image/jpeg');
list($imagen) = mysql_fetch_row(mysql_query("SELECT imagen FROM table WHERE id = $_GET[id] "));
echo $imagen;
Adicionalmente, yo usaria tambien las funciones base64_encode()/decode();
$raw = base64_encode(file_get_contents("imagen.jpg"));