Miércoles 20 de Noviembre de 2024, 08:25
SoloCodigo
Bienvenido(a),
Visitante
. Por favor,
ingresa
o
regístrate
.
¿Perdiste tu
email de activación?
Inicio
Foros
Chat
Ayuda
Buscar
Ingresar
Registrarse
SoloCodigo
»
Foros
»
Programación Web y Scripting
»
PHP
(Moderador:
F_Tanori
) »
Como Extraer Una Imagen De Una Bd
« anterior
próximo »
Imprimir
Páginas: [
1
]
Autor
Tema: Como Extraer Una Imagen De Una Bd (Leído 3736 veces)
Informix
Miembro MUY activo
Mensajes: 154
Como Extraer Una Imagen De Una Bd
«
en:
Martes 7 de Septiembre de 2004, 05:45 »
0
Hola que tal tengo un pequeño problema no se como mostrar una imagen que se encuentra en una BD
la puedo guardar asi:
Código: Text
<?
$conexion = mysql_connect('localhost', 'root', '') or die("NO SE PUDO CONECTAR");
$bd = mysql_select_db("archivos", $conexion);
$archivo = $_FILES['file']['tmp_name'];
$tipo = $_FILES['file']['type'];
$file = fopen($archivo, 'rb');
$binario = fread($file, filesize($archivo));
$binario = addslashes($binario);
fclose($file);
//Insertando en la BD
mysql_query("INSERT INTO imagenes values('', '$binario', '$tipo')");
?>
el $binario es de tipo blob
he intentado asignandole ese campo a una variable y con un <img src=...>
pero creo que no funciona la verdad es que en esto si estoy mas nuevo y es por eso que recurro al foro para ver si alguien me puede ayudar
nos vemos
Tweet
Informix
"Ganar no es algo momentáneo, es algo permanente. Uno no gana de vez en cuando, uno no hace las cosas bien a veces, uno hace las cosas bien siempre" .
Vince Lombardi
Avalon
Miembro MUY activo
Mensajes: 448
Re: Como Extraer Una Imagen De Una Bd
«
Respuesta #1 en:
Martes 7 de Septiembre de 2004, 12:02 »
0
Hola Informix, fíjate en esta discusión
http://foros.solocodigo.com/index.php?showtopic=2251
En la segunda parte de mi respuesta explico como mostrar las fotos, creo que es lo que buscas.
Salu2,
Avalon
Informix
Miembro MUY activo
Mensajes: 154
Re: Como Extraer Una Imagen De Una Bd
«
Respuesta #2 en:
Martes 7 de Septiembre de 2004, 19:13 »
0
de nuevo bueno pues sigo con el problema no se que este haciendo bien o mal
pero aqui les pongo los codigos que he hecho por cierto
Avalon
me fue de gran ayuda el post que me enviaste me ayudo a aclarar algunas cosas
Tengo 3 archivos los cuales describire a continuacion
el primero se llama
subirimagen.php
en este no hay problema solo es la forma
Código: Text
<html>
<head>
<title>Documento sin título</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<form action="grabarimagen.php" method="post" enctype="multipart/form-data" name="form1">
<p>Imagen a subir:
<input name="foto" type="file">
</p>
<p>
<input name="Submit" type="submit" value="Enviar">
</p>
</form>
</body>
</html>
el segundo es
grabarimagen.php
en este guardo la imagen en la BD y va de maravilla
Código: Text
<?php
$foto_type = $_FILES['foto']['type'];
$foto_name = $_FILES['foto']['name'];
$foto_size = $_FILES['foto']['size'];
// Compruebas que se ha subido un archivo
if($foto_name != "")
{
$filetype = $foto_type;
// Compruebas que se trata de una foto
if (!strcmp($filetype, "image/gif") || !strcmp($filetype, "image/jpeg") ||
!strcmp($filetype, "image/pjpeg") || !strcmp($filetype, "image/x-png"))
{
$filename = $foto_name;
$filesize = $foto_size;
$file_tmp = $_FILES['foto']['tmp_name'];
//abriendo archivo temporal
$file = fopen($file_tmp, 'rb');
$filedata = fread($file, filesize($file_tmp));
$filedata = addslashes($filedata);
fclose($file);
//Insertando datos
$conexion = mysql_connect('localhost', 'root', '') or die("No se puede conectar");
$db = mysql_select_db('imagenes', $conexion) or die("No se puede seleccionar la BD");
mysql_query("INSERT INTO imagenes values('', '$filename', '$filetype', '$filesize', '$filedata')");
}
}
?>
Pero el tercero es mi dolor de cabeza
como quiero mostrar las imagenes en una tabla que sea id y la imagen he hecho esto asi:
Código: Text
<html>
<body>
<table border=1>
<tr>
<td>Id</td>
<td>Foto</td>
</tr>
<?php
$conexion = mysql_connect('localhost', 'root', '') or die("No se puede conectar");
$db = mysql_select_db('imagenes', $conexion) or die("No se puede seleccionar la BD");
$reg = mysql_query("SELECT * from imagenes");
$num = mysql_num_rows($reg);
for($i=1; $i<=$num; $i++)
{
echo "<tr>";
echo "<td>".$i."</td>";
echo "<td>";
$file = mysql_fetch_array($reg);
header("Content-disposition: filename=$file[filename]");
header("Content-Length: ".strlen($file[filedata]));
header("Content-type: $file[filetype]");
header("Pragma: no-cache");
header("Expires: 0");
echo $file[filedata];
echo "</td>";
echo "</tr>";
}
?>
</table>
</body>
</html>
Pero el resultado no es satisfactorio ya que me muestra bien la tabla, el id pero en la celda donde va la imagen me pone cosas asi
Código: Text
ÿØÿàJFIFHHÿí„Photoshop 3.08BIMé Print InfoxHHô@ÿîÿîR(ü/Ð0/Àÿÿ//Ы k@Üÿÿÿÿÿÿÿÿ/Ы8BIMí ResolutionHH8BIM FX Global Lighting Angle8BIMFX Global Altitude8BIMó Print Flags 8BIM Copyright
LOL
o sera que ya me volvi como Neo y veo las cosas con puro codigo
bueno me imagino que el problema es que imprime el binario tal cual, ojala puedan explicarme y ayudarme un poco mas en esto, espero no quitarles mucho tiempo de su valioso tiempo, estamos en contacto
Informix
"Ganar no es algo momentáneo, es algo permanente. Uno no gana de vez en cuando, uno no hace las cosas bien a veces, uno hace las cosas bien siempre" .
Vince Lombardi
Avalon
Miembro MUY activo
Mensajes: 448
Re: Como Extraer Una Imagen De Una Bd
«
Respuesta #3 en:
Martes 7 de Septiembre de 2004, 20:03 »
0
El problema está en el tercer archivo. El código que se encarga de mostrar la imagen debe ir en un archivo aparte (p.ej. imagen.php) por el tema de los headers.
Código: Text
<html>
<body>
<table border=1>
<tr>
<td>Id</td>
<td>Foto</td>
</tr>
<?php
$conexion = mysql_connect('localhost', 'root', '') or die("No se puede conectar");
$db = mysql_select_db('imagenes', $conexion) or die("No se puede seleccionar la BD");
$result = mysql_query("SELECT id from imagenes order by id");
while ($reg = mysql_fetch_array($result))
{
echo "<tr>";
echo "<td>".$reg['id']."</td>";
echo "<td>";
echo "<img src=\"imagen.php?id=".$reg['id']."\">";
echo "</td>";
echo "</tr>";
}
?>
</table>
</body>
</html>
Haciéndolo así no deberías tener ningún problema. Y si lo tuvieras, aquí estamos para lo que haga falta.
Salu2,
Avalon
Informix
Miembro MUY activo
Mensajes: 154
Re: Como Extraer Una Imagen De Una Bd
«
Respuesta #4 en:
Miércoles 8 de Septiembre de 2004, 06:41 »
0
LO LOGRE !!!!!!! POR FIN PUDE MOSTRAR LAS IMAGENES !!
y esto no hubiera sido posible sin la ayuda de
Avalon
En verdad que muchas gracias !
a continuacion voy a poner los codigos para que les sirvan a otras personas que como yo no saben como hacer este proceso incluire el archivo sql para la base de datos por cierto contiene 3 fotos de unas bellezas portando la playera de mi equipo de Futbol el
Club America
a lo mejor no lo conocen a lo mejor si, pero es el mejor club de
Mexico
1)
subirimagen.php
Este archivo es el formulario para enviar nuestra imagen a la BD
Código: Text
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Documento sin título</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<form action="grabarimagen.php" method="post" enctype="multipart/form-data" name="form1">
<p>Imagen a subir:
<input name="foto" type="file">
</p>
<p>
<input name="Submit" type="submit" value="Enviar">
</p>
</form>
</body>
</html>
2)
grabarimagen.php
Este archivo da de alta nuestra imagen en la BD
Código: Text
<?php
$foto_type = $_FILES['foto']['type'];
$foto_name = $_FILES['foto']['name'];
$foto_size = $_FILES['foto']['size'];
// Compruebas que se ha subido un archivo
if($foto_name != "")
{
$filetype = $foto_type;
// Compruebas que se trata de una foto
if (!strcmp($filetype, "image/gif") || !strcmp($filetype, "image/jpeg") ||
!strcmp($filetype, "image/pjpeg") || !strcmp($filetype, "image/x-png"))
{
$filename = $foto_name;
$filesize = $foto_size;
$file_tmp = $_FILES['foto']['tmp_name'];
//abriendo archivo temporal
$file = fopen($file_tmp, 'rb');
$filedata = fread($file, filesize($file_tmp));
$filedata = addslashes($filedata);
fclose($file);
//Insertando datos
$conexion = mysql_connect('localhost', 'root', '') or die("No se puede conectar");
$db = mysql_select_db('imagenes', $conexion) or die("No se puede seleccionar la BD");
mysql_query("INSERT INTO imagenes values('', '$filename', '$filetype', '$filesize', '$filedata')");
}
}
?>
3)
mostrar.php
Este archivo sirve para mostrar las imagenes que tenemos ya en nuestra BD
Código: Text
<html>
<body>
<table border=1 align="center">
<tr>
<td align="center">Id</td>
<td align="center">Foto</td>
</tr>
<?php
$conexion = mysql_connect('localhost', 'root', '') or die("No se puede conectar");
$db = mysql_select_db('imagenes', $conexion) or die("No se puede seleccionar la BD");
$result = mysql_query("SELECT id from imagenes order by id");
while ($reg = mysql_fetch_array($result))
{
echo "<tr>";
echo "<td>".$reg['id']."</td>";
echo "<td>";
echo "<img src=\"imagen.php?id=".$reg['id']."\">";
echo "</td>";
echo "</tr>";
}
?>
</table>
</body>
</html>
4)
imagen.php
Este fue el que mas dolor de cabeza me dio
pero por fin quedo listo
Código: Text
<?php
$conexion = mysql_connect('localhost', 'root', '') or die("No se puede conectar");
$db = mysql_select_db('imagenes', $conexion) or die("No se puede seleccionar la BD");
$reg = mysql_query("SELECT * FROM imagenes WHERE id = ".$_GET['id']."");
$file = mysql_fetch_array($reg);
header("Content-disposition: ".$file['filename']."");
header("Content-Length: ".strlen($file['filedata'])."");
header("Content-type:".$file['filetype']."");
header("Pragma: no-cache");
header("Expires: 0");
echo $file['filedata'];
?>
y listo
a todos (no puedo ocultar mi felicidad jejeje me habia quitado el sueño varios dias este problemita)
saludos a todos
Nota:
Gran parte del código no lo escribi, solo fui modificando el que me facilito Avalon de acuerdo a mis necesidades, como siempre digo los creditos para el creador del source
El mensaje contiene
1 archivo adjunto
. Debes
ingresar
o
registrarte
para poder verlo y descargarlo.
Informix
"Ganar no es algo momentáneo, es algo permanente. Uno no gana de vez en cuando, uno no hace las cosas bien a veces, uno hace las cosas bien siempre" .
Vince Lombardi
Avalon
Miembro MUY activo
Mensajes: 448
Re: Como Extraer Una Imagen De Una Bd
«
Respuesta #5 en:
Miércoles 8 de Septiembre de 2004, 10:32 »
0
Enhorabuena! Me alegra que te haya servido la ayuda
Salu2,
Avalon
Imprimir
Páginas: [
1
]
« anterior
próximo »
SoloCodigo
»
Foros
»
Programación Web y Scripting
»
PHP
(Moderador:
F_Tanori
) »
Como Extraer Una Imagen De Una Bd