Programación Web y Scripting > PHP

 Insertar Imágenes A Traves De Archivos Binarios

(1/1)

zaida20:
Hola:
Soy nueva en el foro, y tengo un problema. Quiero insertar imágenes en mysql a través de php, transformando las imágenes a archivos binarios, he conseguido hacerlo mostrándome solo una imagen. Éste es el código:


--- Código: Text ---<?php//conexion$dp_di="localhost";$usuario_db="root";$clave_db=NULL;$conexion=mysql_connect($dp_di,$usuario_db,$clave_db);if($conexion==NULL){  printf("Error");}//conectamos con la bd utopia$db='utopia';mysql_select_db($db,$conexion);ob_start();// Abro el archivo de imagen para cargar sus contenidos$archivo = 'sin_ruta/2.jpg';$fp = fopen ($archivo, 'r');if ($fp){  $datos = fread($fp, filesize ($archivo)); // cargo la imagen  fclose($fp);  // averiguo su tipo mime  $tipo_mime = 'image/jpeg';  $isize = getimagesize($archivo);  if ($isize)  $tipo_mime = $isize['archivo_binario'];  // La guardamos en la BD  $datos = base64_encode ($datos);  $sql = "INSERT INTO archivos (archivo_binario) VALUES ('$datos')";  $res = mysql_query($sql);  if (!$res)    echo "Error al ejecutar la consulta ($sql)\n";   //hacemos el select.      $sql = "SELECT archivo_binario FROM archivos where id=28";     $consulta = mysql_query($sql) or die ("No se pudo ejecutar la consulta");   if($consulta!=NULL)  {    if(mysql_num_rows($consulta)!=0)    {      $datos=mysql_fetch_array($consulta);      echo base64_decode($datos['archivo_binario']);    }  }} ?>  
El problema viene cuando quiero que se muestren todas las imágenes que contiene la tabla de mysql, éste es el código:


--- Código: Text ---<?php//conexion$dp_di="localhost";$usuario_db="root";$clave_db=NULL;$conexion=mysql_connect($dp_di,$usuario_db,$clave_db);if($conexion==NULL){  printf("Error");}//conectamos con la bd utopia$db='utopia';mysql_select_db($db,$conexion);ob_start();// Abro el archivo de imagen para cargar sus contenidos$archivo = 'sin_ruta/2.jpg';$fp = fopen ($archivo, 'r');if ($fp){  $datos = fread($fp, filesize ($archivo)); // cargo la imagen  fclose($fp);  // averiguo su tipo mime  $tipo_mime = 'image/jpeg';  $isize = getimagesize($archivo);  if ($isize)  $tipo_mime = $isize['archivo_binario'];  // La guardamos en la BD  $datos = base64_encode ($datos);  $sql = "INSERT INTO archivos (archivo_binario) VALUES ('$datos')";  $res = mysql_query($sql);  if (!$res)    echo "Error al ejecutar la consulta ($sql)\n";  //hacemos el select.  $sql = "SELECT archivo_binario FROM archivos";  $consulta = mysql_query($sql) or die ("No se pudo ejecutar la consulta");   $i=0;  if($consulta!=NULL)  {    if(mysql_num_rows($consulta)!=0)    {      while ($datos=mysql_fetch_array($consulta))      {        $archivo_bin[$i]=$datos['archivos_binarios'];        $pepe[$i]=base64_decode($archivo_bin[$i]);        //header ('Content-Type: image/jpeg');        echo base64_decode($datos['archivo_binario']);        echo $pepe[$i];        echo $i;        $i++;      }    }  }}?>   
No me funciona, sólo me muestra una imagen. ¿Alquien puede ayudarme?
Muchas gracias
Saludos: :hola:

F_Tanori:
Hola

no se si tu metodo de Inserción este funcionadote bien

pero en este caso para leer  todas las imagenes seria conveniente que cree un archivo que lea la imagen con la cabecera apropiada por ejemplo

con este archivo desplegarias en una tabla (HTML) los las imagenes contenida en la tabla de MySQL

galeria.php

--- Código: Text ---<?php //conexion$dp_di="localhost";$usuario_db="root";$clave_db="";$conexion=mysql_connect($dp_di,$usuario_db,$clave_db);$id=$_GET['id']; if($conexion){ $db='is';mysql_select_db($db,$conexion);ob_start();  $sql = "SELECT id FROM empleados"; $consulta = mysql_query($sql);   if($consulta)  {     echo "<table border='1'>";      while ($datos=mysql_fetch_array($consulta))      {        echo "<td><td><img src='imagen.php?id=".$datos['id']."' width='190px' height='90px'></td></tr>\n";      }      echo "</table>";  }}   ?> 

imagen.php
Este archivo procesa el campo blob


--- Código: Text --- <?phpheader ('Content-Type: image/jpeg'); //conexion$dp_di="localhost";$usuario_db="root";$clave_db="";$conexion=mysql_connect($dp_di,$usuario_db,$clave_db);$id=$_GET['id']; if($conexion){ $db='is';mysql_select_db($db,$conexion);ob_start();  $sql = "SELECT foto FROM empleados  WHERE id='$id'"; $consulta = mysql_query($sql);    if($consulta)  {      $datos=mysql_fetch_array($consulta);      echo $datos['foto'];  }}?> 
aqui hay una manera de insertar

http://www.buayacorp.com/archivos/guardar-...-blob-de-mysql/

Para Leer

http://www.buayacorp.com/archivos/mostrar-...sql-usando-php/

aunque no se si tu metodo funciones yo hice pruebas con unas tablas que ya contienen imagenes :P y es una idea  :ph34r:  supongo que hay mas ......

Espero te sea de ayuda
Saludos

zaida20:
Muchas gracias F_Tanori

Lo he conseguido con un código que he encontrado en éste foro, de todas formas probaré con el tuyo haber que tal.

Muchisimas gracias!!!!
Saludos:  :hola:

Navegación

[0] Índice de Mensajes

Ir a la versión completa