Ver Mensaje Individual
  #1 (permalink)  
Antiguo 14/02/2014, 14:44
cga23
 
Fecha de Ingreso: enero-2014
Mensajes: 10
Antigüedad: 10 años, 4 meses
Puntos: 0
No se puede mostrar la imagen porque contiene errores

Hola a todos

Al tratar de mostrar una imagen previamente subida a la base de datos, me sale ese echo, he comprobado que la libreria GD este correctamente en el fichero php.ini.
extension=php_gd2.dll esta descomentada. (uso WIndows, y xampp)

El usuario sube la imagen a traves de un formulario. EL codigo es el siguiente:
Código PHP:
Ver original
  1. <?php
  2. mysql_connect("localhost", "root", "") or die(mysql_error());
  3.  
  4. if (!isset($_FILES["imagen"]) || $_FILES["imagen"]["error"] > 0)
  5. {
  6.     echo "Ha ocurrido un error.";
  7. }
  8. else
  9. {
  10.     $permitidos = array("image/jpg", "image/jpeg", "image/gif", "image/png");
  11.     $limite_kb = 16384;
  12.  
  13.     if (in_array($_FILES['imagen']['type'], $permitidos) && $_FILES['imagen']['size'] <= $limite_kb * 1024)
  14.     {
  15.  
  16.         $imagen_temporal = $_FILES['imagen']['tmp_name'];
  17.  
  18.         $tipo = $_FILES['imagen']['type'];
  19.  
  20.         $fp = fopen($imagen_temporal, 'r+b');
  21.         $data = fread($fp, filesize($imagen_temporal));
  22.         fclose($fp);
  23.  
  24.         $data = mysql_escape_string($data);
  25.  
  26.         $resultado = @mysql_query("INSERT INTO imagenes (imagen, tipo_imagen) VALUES ('$data', '$tipo')");
  27.  
  28.         if ($resultado)
  29.         {
  30.             echo "El archivo ha sido copiado exitosamente.";
  31.         }
  32.         else
  33.         {
  34.             echo "Ocurrió algun error al copiar el archivo.";
  35.         }
  36.     }
  37.     else
  38.     {
  39.         echo "Formato de archivo no permitido o excede el tamaño límite de $limite_kb Kbytes.";
  40.     }
  41. }
  42. ?>

La subida la hace sin problemas.

Y el codigo para recuperarla de la base de datos el siguiente:
Código PHP:
Ver original
  1. <?php
  2.     mysql_connect("localhost", "root", "") or die(mysql_error());
  3.     mysql_select_db("open") or die(mysql_error());
  4.    
  5.  
  6.         $consulta = "SELECT imagen, tipo_imagen FROM imagenes WHERE imagen_id='3'";
  7.         $resultado = mysql_query($consulta) or die(mysql_error());
  8.         $datos = mysql_fetch_assoc($resultado);
  9.      
  10.         $imagen = $datos['imagen']; // Datos binarios de la imagen.
  11.         $tipo = $datos['tipo_imagen'];  // Mime Type de la imagen.
  12. que vamos a enviar.
  13.         header("Content-type: $tipo");
  14.         echo $imagen;
  15.  
  16.     ?>

Última edición por cga23; 14/02/2014 a las 15:02