• Miércoles 1 de Mayo de 2024, 21:34

Autor Tema:  Como Extraer Una Imagen De Una Bd  (Leído 3634 veces)

Informix

  • Miembro MUY activo
  • ***
  • Mensajes: 154
    • Ver Perfil
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  :blink: la puedo guardar asi:

Código: Text
  1.  
  2. <?
  3.   $conexion = mysql_connect('localhost', 'root', '') or die("NO SE PUDO CONECTAR");
  4.   $bd = mysql_select_db("archivos", $conexion);
  5.  
  6.   $archivo = $_FILES['file']['tmp_name'];
  7.   $tipo = $_FILES['file']['type'];
  8.   $file = fopen($archivo, 'rb');
  9.   $binario = fread($file, filesize($archivo));
  10.   $binario = addslashes($binario);
  11.   fclose($file);    
  12.   //Insertando en la BD
  13.   mysql_query("INSERT INTO imagenes values('', '$binario', '$tipo')");
  14.  
  15. ?>
  16.  
  17.  

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  :kicking:
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
    • Ver Perfil
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
    • Ver Perfil
Re: Como Extraer Una Imagen De Una Bd
« Respuesta #2 en: Martes 7 de Septiembre de 2004, 19:13 »
0
:hola: de nuevo bueno pues sigo con el problema no se que este haciendo bien o mal  :unsure: 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  :D

Código: Text
  1.  
  2. &#60;html&#62;
  3. &#60;head&#62;
  4. &#60;title&#62;Documento sin t&iacute;tulo&#60;/title&#62;
  5. &#60;meta http-equiv=&#34;Content-Type&#34; content=&#34;text/html; charset=iso-8859-1&#34;&#62;
  6. &#60;/head&#62;
  7.  
  8. &#60;body&#62;
  9. &#60;form action=&#34;grabarimagen.php&#34; method=&#34;post&#34; enctype=&#34;multipart/form-data&#34; name=&#34;form1&#34;&#62;
  10.   &#60;p&#62;Imagen a subir:
  11.     &#60;input name=&#34;foto&#34; type=&#34;file&#34;&#62;
  12. &#60;/p&#62;
  13.   &#60;p&#62;
  14.     &#60;input name=&#34;Submit&#34; type=&#34;submit&#34; value=&#34;Enviar&#34;&#62;
  15. &#60;/p&#62;
  16. &#60;/form&#62;
  17. &#60;/body&#62;
  18. &#60;/html&#62;
  19.  
  20.  

el segundo es grabarimagen.php en este guardo la imagen en la BD y va de maravilla  :whistling:

Código: Text
  1.  
  2. &#60;?php
  3.         &#036;foto_type = &#036;_FILES['foto']['type'];
  4.         &#036;foto_name = &#036;_FILES['foto']['name'];
  5.         &#036;foto_size = &#036;_FILES['foto']['size'];
  6.  
  7.         // Compruebas que se ha subido un archivo
  8.         if(&#036;foto_name != &#34;&#34;)
  9.         {
  10.             &#036;filetype = &#036;foto_type;
  11.                 // Compruebas que se trata de una foto
  12.             if (!strcmp(&#036;filetype, &#34;image/gif&#34;) || !strcmp(&#036;filetype, &#34;image/jpeg&#34;) ||
  13.                             !strcmp(&#036;filetype, &#34;image/pjpeg&#34;) || !strcmp(&#036;filetype, &#34;image/x-png&#34;))
  14.                 {
  15.                 &#036;filename = &#036;foto_name;
  16.                 &#036;filesize = &#036;foto_size;
  17.                         &#036;file_tmp = &#036;_FILES['foto']['tmp_name'];
  18.                         //abriendo archivo temporal
  19.                         &#036;file = fopen(&#036;file_tmp, 'rb');
  20.                         &#036;filedata = fread(&#036;file, filesize(&#036;file_tmp));
  21.                         &#036;filedata = addslashes(&#036;filedata);
  22.                         fclose(&#036;file);
  23.  
  24.                  //Insertando datos
  25.                          &#036;conexion = mysql_connect('localhost', 'root', '') or die(&#34;No se puede conectar&#34;);
  26.                          &#036;db = mysql_select_db('imagenes', &#036;conexion) or die(&#34;No se puede seleccionar la BD&#34;);
  27.  
  28.                          mysql_query(&#34;INSERT INTO imagenes values('', '&#036;filename', '&#036;filetype', '&#036;filesize', '&#036;filedata')&#34;);
  29.             }
  30.         }
  31. ?&#62;
  32.  
  33.  

Pero el tercero es mi dolor de cabeza  :angry:  como quiero mostrar las imagenes en una tabla que sea id y la imagen he hecho esto asi:

Código: Text
  1.  
  2. &#60;html&#62;
  3. &#60;body&#62;
  4. &#60;table border=1&#62;
  5. &#60;tr&#62;
  6.         &#60;td&#62;Id&#60;/td&#62;
  7.         &#60;td&#62;Foto&#60;/td&#62;
  8. &#60;/tr&#62;
  9. &#60;?php
  10.        &#036;conexion = mysql_connect('localhost', 'root', '') or die(&#34;No se puede conectar&#34;);
  11.        &#036;db = mysql_select_db('imagenes', &#036;conexion) or die(&#34;No se puede seleccionar la BD&#34;);
  12.        &#036;reg = mysql_query(&#34;SELECT * from imagenes&#34;);
  13.        &#036;num = mysql_num_rows(&#036;reg);
  14.         for(&#036;i=1; &#036;i&#60;=&#036;num; &#036;i++)
  15.         {
  16.                 echo &#34;&#60;tr&#62;&#34;;
  17.                         echo &#34;&#60;td&#62;&#34;.&#036;i.&#34;&#60;/td&#62;&#34;;
  18.                         echo &#34;&#60;td&#62;&#34;;
  19.                         &#036;file = mysql_fetch_array(&#036;reg);
  20.                         header(&#34;Content-disposition: filename=&#036;file[filename]&#34;);
  21.                         header(&#34;Content-Length: &#34;.strlen(&#036;file[filedata]));
  22.                         header(&#34;Content-type: &#036;file[filetype]&#34;);
  23.                         header(&#34;Pragma: no-cache&#34;);
  24.                         header(&#34;Expires: 0&#34;);
  25.                         echo &#036;file[filedata];
  26.                         echo &#34;&#60;/td&#62;&#34;;
  27.                 echo &#34;&#60;/tr&#62;&#34;;
  28.         }
  29. ?&#62;
  30. &#60;/table&#62;
  31. &#60;/body&#62;
  32. &#60;/html&#62;
  33.  
  34.  

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
  1.  
  2. ÿØÿàJFIFHHÿí„Photoshop 3.08BIMé Print InfoxHHô@ÿîÿîR(ü/Ð0/Àÿÿ//Ы k@Üÿÿÿÿÿÿÿÿ/Ы8BIMí ResolutionHH8BIM FX Global Lighting Angle8BIMFX Global Altitude8BIMó Print Flags 8BIM Copyright
  3.  
  4.  

LOL  :D  o sera que ya me volvi como Neo y veo las cosas con puro codigo  :lol: 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

 :kicking:
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
    • Ver Perfil
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
  1. &#60;html&#62;
  2. &#60;body&#62;
  3. &#60;table border=1&#62;
  4. &#60;tr&#62;
  5.        &#60;td&#62;Id&#60;/td&#62;
  6.        &#60;td&#62;Foto&#60;/td&#62;
  7. &#60;/tr&#62;
  8. &#60;?php
  9.       &#036;conexion = mysql_connect('localhost', 'root', '') or die(&#34;No se puede conectar&#34;);
  10.       &#036;db = mysql_select_db('imagenes', &#036;conexion) or die(&#34;No se puede seleccionar la BD&#34;);
  11.       &#036;result = mysql_query(&#34;SELECT id from imagenes order by id&#34;);
  12.       while (&#036;reg = mysql_fetch_array(&#036;result))
  13.        {
  14.                echo &#34;&#60;tr&#62;&#34;;
  15.                        echo &#34;&#60;td&#62;&#34;.&#036;reg['id'].&#34;&#60;/td&#62;&#34;;
  16.                        echo &#34;&#60;td&#62;&#34;;
  17.                        echo &#34;&#60;img src=&#092;&#34;imagen.php?id=&#34;.&#036;reg['id'].&#34;&#092;&#34;&#62;&#34;;
  18.                        echo &#34;&#60;/td&#62;&#34;;
  19.                echo &#34;&#60;/tr&#62;&#34;;
  20.        }
  21. ?&#62;
  22. &#60;/table&#62;
  23. &#60;/body&#62;
  24. &#60;/html&#62;
  25.  
  26.  


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
    • Ver Perfil
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  B)

1)subirimagen.php Este archivo es el formulario para enviar nuestra imagen a la BD

Código: Text
  1.  
  2. &#60;!DOCTYPE HTML PUBLIC &#34;-//W3C//DTD HTML 4.01 Transitional//EN&#34; &#34;http://www.w3.org/TR/html4/loose.dtd&#34;&#62;
  3. &#60;html&#62;
  4. &#60;head&#62;
  5. &#60;title&#62;Documento sin t&iacute;tulo&#60;/title&#62;
  6. &#60;meta http-equiv=&#34;Content-Type&#34; content=&#34;text/html; charset=iso-8859-1&#34;&#62;
  7. &#60;/head&#62;
  8.  
  9. &#60;body&#62;
  10. &#60;form action=&#34;grabarimagen.php&#34; method=&#34;post&#34; enctype=&#34;multipart/form-data&#34; name=&#34;form1&#34;&#62;
  11.   &#60;p&#62;Imagen a subir:
  12.     &#60;input name=&#34;foto&#34; type=&#34;file&#34;&#62;
  13. &#60;/p&#62;
  14.   &#60;p&#62;
  15.     &#60;input name=&#34;Submit&#34; type=&#34;submit&#34; value=&#34;Enviar&#34;&#62;
  16. &#60;/p&#62;
  17. &#60;/form&#62;
  18. &#60;/body&#62;
  19. &#60;/html&#62;
  20.  
  21.  

2)grabarimagen.php Este archivo da de alta nuestra imagen en la BD
Código: Text
  1.  
  2. &#60;?php
  3.   &#036;foto_type = &#036;_FILES['foto']['type'];
  4.   &#036;foto_name = &#036;_FILES['foto']['name'];
  5.   &#036;foto_size = &#036;_FILES['foto']['size'];    
  6.  
  7.   // Compruebas que se ha subido un archivo
  8.   if(&#036;foto_name != &#34;&#34;)
  9.   {
  10.       &#036;filetype = &#036;foto_type;      
  11.     // Compruebas que se trata de una foto
  12.       if (!strcmp(&#036;filetype, &#34;image/gif&#34;) || !strcmp(&#036;filetype, &#34;image/jpeg&#34;) ||
  13.           !strcmp(&#036;filetype, &#34;image/pjpeg&#34;) || !strcmp(&#036;filetype, &#34;image/x-png&#34;))
  14.     {
  15.           &#036;filename = &#036;foto_name;
  16.           &#036;filesize = &#036;foto_size;
  17.       &#036;file_tmp = &#036;_FILES['foto']['tmp_name'];
  18.       //abriendo archivo temporal
  19.       &#036;file = fopen(&#036;file_tmp, 'rb');
  20.       &#036;filedata = fread(&#036;file, filesize(&#036;file_tmp));
  21.       &#036;filedata = addslashes(&#036;filedata);
  22.       fclose(&#036;file);              
  23.  
  24.            //Insertando datos
  25.        &#036;conexion = mysql_connect('localhost', 'root', '') or die(&#34;No se puede conectar&#34;);
  26.        &#036;db = mysql_select_db('imagenes', &#036;conexion) or die(&#34;No se puede seleccionar la BD&#34;);
  27.      
  28.        mysql_query(&#34;INSERT INTO imagenes values('', '&#036;filename', '&#036;filetype', '&#036;filesize', '&#036;filedata')&#34;);
  29.       }
  30.   }
  31. ?&#62;
  32.  

3)mostrar.php Este archivo sirve para mostrar las imagenes que tenemos ya en nuestra BD

Código: Text
  1.  
  2. &#60;html&#62;
  3. &#60;body&#62;
  4. &#60;table border=1 align=&#34;center&#34;&#62;
  5. &#60;tr&#62;
  6.       &#60;td align=&#34;center&#34;&#62;Id&#60;/td&#62;
  7.       &#60;td align=&#34;center&#34;&#62;Foto&#60;/td&#62;
  8. &#60;/tr&#62;
  9. &#60;?php
  10.      &#036;conexion = mysql_connect('localhost', 'root', '') or die(&#34;No se puede conectar&#34;);
  11.      &#036;db = mysql_select_db('imagenes', &#036;conexion) or die(&#34;No se puede seleccionar la BD&#34;);
  12.      &#036;result = mysql_query(&#34;SELECT id from imagenes order by id&#34;);
  13.      while (&#036;reg = mysql_fetch_array(&#036;result))
  14.       {
  15.               echo &#34;&#60;tr&#62;&#34;;
  16.                       echo &#34;&#60;td&#62;&#34;.&#036;reg['id'].&#34;&#60;/td&#62;&#34;;
  17.                       echo &#34;&#60;td&#62;&#34;;                  
  18.             echo &#34;&#60;img src=&#092;&#34;imagen.php?id=&#34;.&#036;reg['id'].&#34;&#092;&#34;&#62;&#34;;
  19.                       echo &#34;&#60;/td&#62;&#34;;
  20.               echo &#34;&#60;/tr&#62;&#34;;
  21.       }
  22. ?&#62;
  23. &#60;/table&#62;
  24. &#60;/body&#62;
  25. &#60;/html&#62;
  26.  

4)imagen.php Este fue el que mas dolor de cabeza me dio  :huh: pero por fin quedo listo  :lol:

Código: Text
  1.  
  2. &#60;?php
  3.   &#036;conexion = mysql_connect('localhost', 'root', '') or die(&#34;No se puede conectar&#34;);
  4.     &#036;db = mysql_select_db('imagenes', &#036;conexion) or die(&#34;No se puede seleccionar la BD&#34;);
  5.     &#036;reg = mysql_query(&#34;SELECT * FROM imagenes WHERE id = &#34;.&#036;_GET['id'].&#34;&#34;);
  6.  
  7.   &#036;file = mysql_fetch_array(&#036;reg);
  8.  
  9.   header(&#34;Content-disposition: &#34;.&#036;file['filename'].&#34;&#34;);
  10.   header(&#34;Content-Length: &#34;.strlen(&#036;file['filedata']).&#34;&#34;);
  11.   header(&#34;Content-type:&#34;.&#036;file['filetype'].&#34;&#34;);
  12.   header(&#34;Pragma: no-cache&#34;);
  13.   header(&#34;Expires: 0&#34;);
  14.   echo &#036;file['filedata'];
  15. ?&#62;
  16.  
  17.  

y listo  :kicking:  :bravo:

 :gracias: 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
    • Ver Perfil
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