Foros del Web » Programando para Internet » PHP »

Mostrar imagenes desde un campo de blob SQL

Estas en el tema de Mostrar imagenes desde un campo de blob SQL en el foro de PHP en Foros del Web. Hola, alguien me puede decir donde encuentro un buen tutorial de como mostrar una imagen desde blob mysql usando PHP?? Bueno en realidad encontré uno ...
  #1 (permalink)  
Antiguo 24/08/2011, 06:03
 
Fecha de Ingreso: agosto-2011
Mensajes: 18
Antigüedad: 12 años, 8 meses
Puntos: 0
Pregunta Mostrar imagenes desde un campo de blob SQL

Hola, alguien me puede decir donde encuentro un buen tutorial de como mostrar una imagen desde blob mysql usando PHP??

Bueno en realidad encontré uno muy bueno, nada mas que no me funciona, no se donde estará el error. A ver si alguien es tan amable y me ayuda...


Código:
<body>
<img src="verblob.php?idfoto=1&tam=1" alt="Imagen desde Blob" />
<?php
//Autor: Braulio Andrés Soncco Pimentel <[email protected]>
//http://www.buayacorp.com/

	// Nivel de errores
	error_reporting(E_ALL);

	// Constantes
	# Servidor de base de datos
	define("DBHOST", "localhost");
	# nombre de la base de datos
	define("DBNAME", "Base de datos");
	# Usuario de base de datos
	define("DBUSER", "root");
	# Password de base de datos
	define("DBPASSWORD", "Password");
	
	// Parámetros para recuperar la imagen
	# Recuperamos el parámetro GET con el id único de la foto que queremos mostrar
	$idfoto = (isset($_GET["idfoto"])) ? $_GET["idfoto"] : exit();
	# Recuperamos el parámetro GET para elegir entre la miniatura o la foto real
	$tam = (isset($_GET["tam"])) ? $_GET["tam"] : 1;
	
	// Escojemos la foto real o la miniatura según la variable $tam
	switch($tam) {
		case "1":
			$campo = "foto";break;;
		case "2":
			$campo = "thumb";break;;
		default:
			$campo = "foto";break;;
	}
	

	// Recuperamos la foto de la tabla
	$sql = "SELECT $campo, mime
			FROM imagenes 
			WHERE idfoto = $idfoto";
		
	# Conexión a la base de datos
	$link = mysql_connect(DBHOST, DBUSER, DBPASSWORD) or die(mysql_error($link));;
	mysql_select_db(DBNAME, $link) or die(mysql_error($link));
	
	$conn = mysql_query($sql, $link) or die(mysql_error($link));
	$datos = mysql_fetch_array($conn);
	
	// La imagen
	$imagen = $datos[0];
	// El mime type de la imagen
	$mime = $datos[1];
	
	// Gracias a esta cabecera, podemos ver la imagen 
	// que acabamos de recuperar del campo blob
	header("Content-Type: $mime");
	// Muestra la imagen
	echo $imagen;	

?>

</body>

Y en la base de datos tengo esto:
Código:
CREATE TABLE `tabla` (

  `idfoto` int(3) NOT NULL AUTO_INCREMENT,

  `nombre` varchar(255) NOT NULL DEFAULT '',

  `foto` blob NOT NULL,

  `thumb` blob NOT NULL,

  `mime` varchar(40) NOT NULL DEFAULT '',

  PRIMARY KEY  (`idfoto`)

) ;
Cita:
Gracias...
  #2 (permalink)  
Antiguo 24/08/2011, 06:15
Avatar de jaronu  
Fecha de Ingreso: febrero-2008
Mensajes: 2.183
Antigüedad: 16 años, 2 meses
Puntos: 52
Respuesta: <Ayuda>Mostrar imagenes desde un campo de blob SQL</Ayuda>

Hola

Que error te da? es de php? de mySql?

Un saludo
  #3 (permalink)  
Antiguo 24/08/2011, 06:22
 
Fecha de Ingreso: agosto-2011
Mensajes: 18
Antigüedad: 12 años, 8 meses
Puntos: 0
Respuesta: <Ayuda>Mostrar imagenes desde un campo de blob SQL</Ayuda>

Mmmmm no no, no me da error de nada... Eso es lo extraño. :S


  #4 (permalink)  
Antiguo 24/08/2011, 06:23
 
Fecha de Ingreso: agosto-2011
Mensajes: 18
Antigüedad: 12 años, 8 meses
Puntos: 0
Respuesta: <Ayuda>Mostrar imagenes desde un campo de blob SQL</Ayuda>

Con ese script subo las ima a la base de datos..


Código PHP:
Ver original
  1. <?php
  2.  
  3. // Verificamos que el formulario no ha sido enviado aun
  4.  
  5. $postback = (isset($_POST["enviar"])) ? true : false;
  6.  
  7. if($postback){
  8.  
  9.   // Nivel de errores
  10.  
  11.   error_reporting(E_ALL);
  12.  
  13.   // Constantes
  14.  
  15.   # Altura de el thumbnail en p�xeles
  16.  
  17.   define("ALTURA", 100);
  18.  
  19.   # Nombre del archivo temporal del thumbnail
  20.  
  21.   define("NAMETHUMB", "c:/windows/temp/thumbtemp"); //Esto en servidores Linux, en Windows podr�a ser:
  22.  
  23. // define("NAMETHUMB", "c:/windows/temp/thumbtemp"); y te olvidas de los problemas de permisos
  24.  
  25.   # Servidor de base de datos
  26.  
  27.   define("DBHOST", "localhost");
  28.  
  29.   # nombre de la base de datos
  30.  
  31.   define("DBNAME", "plantillas");
  32.  
  33.   # Usuario de base de datos
  34.  
  35.   define("DBUSER", "root");
  36.  
  37.   # Password de base de datos
  38.  
  39.   define("DBPASSWORD", "Elamor16");
  40.  
  41.   // Mime types permitidos
  42.  
  43.   $mimetypes = array("image/jpeg", "image/pjpeg", "image/gif", "image/png");
  44.  
  45.   // Variables de la foto
  46.  
  47.   $name = $_FILES["foto"]["name"];
  48.  
  49.   $type = $_FILES["foto"]["type"];
  50.  
  51.   $tmp_name = $_FILES["foto"]["tmp_name"];
  52.  
  53.   $size = $_FILES["foto"]["size"];
  54.  
  55.   // Verificamos si el archivo es una imagen v�lida
  56.  
  57.   if(!in_array($type, $mimetypes))
  58.  
  59.     die("El archivo que subiste no es una imagen v�lida");
  60.  
  61.   // Creando el thumbnail
  62.  
  63.   switch($type) {
  64.  
  65.     case $mimetypes[0]:
  66.  
  67.     case $mimetypes[1]:
  68.  
  69.       $img = imagecreatefromjpeg($tmp_name);
  70.  
  71.       break;
  72.  
  73.     case $mimetypes[2]:
  74.  
  75.       $img = imagecreatefromgif($tmp_name);
  76.  
  77.       break;
  78.  
  79.     case $mimetypes[3]:
  80.  
  81.       $img = imagecreatefrompng($tmp_name);
  82.  
  83.       break;
  84.  
  85.   }
  86.  
  87.   $datos = getimagesize($tmp_name);
  88.  
  89.   $ratio = ($datos[1]/ALTURA);
  90.  
  91.   $ancho = round($datos[0]/$ratio);
  92.  
  93.   $thumb = imagecreatetruecolor($ancho, ALTURA);
  94.  
  95.   imagecopyresized($thumb, $img, 0, 0, 0, 0, $ancho, ALTURA, $datos[0], $datos[1]);
  96.  
  97.   switch($type) {
  98.  
  99.     case $mimetypes[0]:
  100.  
  101.     case $mimetypes[1]:
  102.  
  103.       imagejpeg($thumb, NAMETHUMB);
  104.  
  105.           break;
  106.  
  107.     case $mimetypes[2]:
  108.  
  109.       imagegif($thumb, NAMETHUMB);
  110.  
  111.       break;
  112.  
  113.     case $mimetypes[3]:
  114.  
  115.       imagepng($thumb, NAMETHUMB);
  116.  
  117.       break;
  118.  
  119.   }
  120.  
  121.   // Extrae los contenidos de las fotos
  122.  
  123.   # contenido de la foto original
  124.  
  125.   $fp = fopen($tmp_name, "rb");
  126.  
  127.   $tfoto = fread($fp, filesize($tmp_name));
  128.  
  129.   $tfoto = addslashes($tfoto);
  130.  
  131.   fclose($fp);
  132.  
  133.   # contenido del thumbnail
  134.  
  135.   $fp = fopen(NAMETHUMB, "rb");
  136.  
  137.   $tthumb = fread($fp, filesize(NAMETHUMB));
  138.  
  139.   $tthumb = addslashes($tthumb);
  140.  
  141.   fclose($fp);
  142.  
  143.   // Borra archivos temporales si es que existen
  144.  
  145.   @unlink($tmp_name);
  146.  
  147.   @unlink(NAMETHUMB);
  148.  
  149.   // Guardamos todo en la base de datos
  150.  
  151.   #nombre de la foto
  152.  
  153.   $nombre = $_POST["nombre"];
  154.  
  155.   $link = mysql_connect(DBHOST, DBUSER, DBPASSWORD) or die(mysql_error($link));;
  156.  
  157.   mysql_select_db(DBNAME, $link) or die(mysql_error($link));
  158.  
  159.   $sql = "INSERT INTO imagenes(nombre, foto, thumb, mime)
  160.  
  161.    VALUES
  162.  
  163.    ('$nombre', '$tfoto', '$tthumb', '$type')";
  164.  
  165.   mysql_query($sql, $link) or die(mysql_error($link));
  166.  
  167.   echo "Fotos guardadas";
  168.  
  169.   exit();
  170.  
  171. }
  172.  
  173. ?>
  174. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  175.  
  176.         "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  177.  
  178. <html xmlns="http://www.w3.org/1999/xhtml">
  179.  
  180. <head>
  181.  
  182. <title>Imagen a Blob</title>
  183.  
  184. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  185.  
  186. </head>
  187.  
  188. <body>
  189.  
  190. <form name="frmimage" id="frmimage" method="post"
  191.  
  192.         enctype="multipart/form-data" action="<?php echo $_SERVER['PHP_SELF'];?>">
  193.  
  194.         Nombre: <input type="text" id="nombre" name="nombre" /><br />
  195.  
  196.         Imagen: <input type="file" id="foto" name="foto" /><br />
  197.  
  198.         <input type="submit" name="enviar" id="enviar" value="Guardar" />
  199.  
  200. </form>
  201.  
  202. </body>
  203.  
  204. </html>
  #5 (permalink)  
Antiguo 24/08/2011, 06:25
Avatar de jaronu  
Fecha de Ingreso: febrero-2008
Mensajes: 2.183
Antigüedad: 16 años, 2 meses
Puntos: 52
Respuesta: <Ayuda>Mostrar imagenes desde un campo de blob SQL</Ayuda>

es dificil revisar todo el codigo si no te da error
trabajas en local, por que si es a si, te deberian de salir los errores de php o mysql
  #6 (permalink)  
Antiguo 24/08/2011, 06:31
 
Fecha de Ingreso: agosto-2011
Mensajes: 18
Antigüedad: 12 años, 8 meses
Puntos: 0
Respuesta: <Ayuda>Mostrar imagenes desde un campo de blob SQL</Ayuda>

Si trabajo en localhost y no me tira ningun error....
  #7 (permalink)  
Antiguo 24/08/2011, 10:25
Avatar de jaronu  
Fecha de Ingreso: febrero-2008
Mensajes: 2.183
Antigüedad: 16 años, 2 meses
Puntos: 52
Respuesta: Mostrar imagenes desde un campo de blob SQL

Hola

saca el error_reporting del if y comprueba que llega bien la variable por post

Código PHP:
Ver original
  1. // Nivel de errores
  2.  
  3. $postback = (isset($_POST["enviar"])) ? true : false;
  4. //si no te imprime en pantalla no entrará el if
  5. echo"este es el valor de la varoable".$postback;
  6.  
  7. if($postback){
Un saludo
  #8 (permalink)  
Antiguo 24/08/2011, 11:30
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 12 años, 9 meses
Puntos: 793
Respuesta: Mostrar imagenes desde un campo de blob SQL

Hola @Choochex, elimina esta línea de tu código mientras encuentras tus errores:

Código PHP:
Ver original
  1. header("Content-Type: $mime");

o sino no vas a ver ninguno en pantalla así tengas el máximo nivel en error_reporting.

De igual manera comprueba que se estén pasando correctamente las variables por el método $_GET porque tienes un exit()

Código PHP:
Ver original
  1. $idfoto = (isset($_GET["idfoto"])) ? $_GET["idfoto"] : exit();
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP
  #9 (permalink)  
Antiguo 25/08/2011, 02:30
 
Fecha de Ingreso: agosto-2011
Mensajes: 18
Antigüedad: 12 años, 8 meses
Puntos: 0
Respuesta: Mostrar imagenes desde un campo de blob SQL

@jaronu, ya lo intente y eso no me había funcionado y @andresdzphp, ya lo quiete, pero se supone que es lo que muestra la imagen. Bueno lo que toma el formato de la ima..... Creo que no hay manera, talvez algun otro tutorial?? :/

Etiquetas: blob, imagenes, sql, tutoriales, campos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 01:17.