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
Ir a la versión completa