Foros del Web » Programando para Internet » PHP »

problema con visualizacion de imagenes

Estas en el tema de problema con visualizacion de imagenes en el foro de PHP en Foros del Web. hola a todos tengo un pequeño problema en un script en php el cual muestra las imagenes guardadas en una base de datos mysql, el ...
  #1 (permalink)  
Antiguo 28/09/2011, 16:31
Avatar de jatg  
Fecha de Ingreso: abril-2011
Ubicación: caracas
Mensajes: 152
Antigüedad: 13 años
Puntos: 15
Pregunta problema con visualizacion de imagenes

hola a todos tengo un pequeño problema en un script en php el cual muestra las imagenes guardadas en una base de datos mysql, el problema esta en que el mismo no muestra la imagen si no que en el navegador me aparece un simbolo de color azul con una barra inclinada en el medio.

que creen ustedes que pueda esta pasando ?

nota: tengo la extencion gd2 de php activada.

el script que utilizo para dicho formulario es el siguiente:

Código PHP:
Ver original
  1. <HTML>
  2. <HEAD>
  3. <TITLE>Binario a BD</TITLE>
  4. </HEAD>
  5. <BODY>
  6. <?php
  7. if (isset($_GET['proceso'])){
  8. echo $_GET['proceso']."<br>";
  9. }
  10. ?>
  11. <FORM enctype="multipart/form-data" method="post" action="insertar.php">
  12. Archivo: <INPUT type="file" name="archivo" size="30">
  13. <INPUT type="submit" name="submit" value="Subir archivo">
  14. </FORM>
  15. </BODY>
  16. </HTML>
  17. //////////////////////////////////////////////////////////////////////////////////////////
  18. //insertar.php/
  19.  
  20. <?php
  21. //Primero, arranca el bloque PHP y checkea si el archivo tiene nombre.  Si no fue asi, te remite de nuevo al formulario de inserción:
  22. // No se comprueba aqui si se ha subido correctamente.
  23. if (empty($_FILES['archivo']['name'])){
  24. header("location: formulario.php?proceso=falta_indicar_fichero"); //o como se llame el formulario ..
  25. }
  26.  
  27. //establece una conexión con la base de datos.
  28. $conexion = mysql_connect("localhost","root","") or die("No se pudo realizar la conexion con el servidor.");
  29. mysql_select_db("jose",$conexion) or die("No se puede seleccionar BD"); // tu_bd es el nombre de la Base de datos .. por siaca.
  30.  
  31. // archivo temporal (ruta y nombre).
  32. $binario_nombre_temporal=$_FILES['archivo']['tmp_name'] ;
  33.  
  34. // leer del archvio temporal .. el binario subido.
  35. // "rb" para Windows .. Linux parece q con "r" sobra ...
  36. $binario_contenido = addslashes(fread(fopen($binario_nombre_temporal, "rb"), filesize($binario_nombre_temporal)));
  37.  
  38. // Obtener del array FILES (superglobal) los datos del binario .. nombre, tabamo y tipo.
  39. $binario_nombre=$_FILES['archivo']['name'];
  40. $binario_peso=$_FILES['archivo']['size'];
  41. $binario_tipo=$_FILES['archivo']['type'];
  42.  
  43. //insertamos los datos en la BD.
  44. $consulta_insertar = "INSERT INTO archivos (id, archivo_binario, archivo_nombre, archivo_peso, archivo_tipo) VALUES ('', '$binario_contenido', '$binario_nombre', '$binario_peso', '$binario_tipo')";
  45. mysql_query($consulta_insertar,$conexion) or die("No se pudo insertar los datos en la base de datos.");
  46. header("location: listar_imagenes.php");  // si ha ido todo bien
  47. ?>
  48.  
  49. /////////////////////////////////////////////////////////////////////
  50. ////////////listar_imagenes.php///////////////////
  51.  
  52. <?php
  53.     mysql_connect("localhost","root","") or die ("no se ha podido conectar a la BD");
  54.  
  55.     mysql_select_db("jose") or die ("no se ha podido seleccionar la BD");
  56.  
  57.     $sql = "SELECT id,archivo_nombre,archivo_tipo,archivo_peso FROM archivos";
  58.     $consulta = mysql_query($sql) or die ("No se pudo ejecutar la consulta");
  59.  
  60.     While ($registro=mysql_fetch_assoc($consulta)){
  61.         echo "<img src=\"ver.php?id=".$registro['id']."\">";
  62.         echo "<br> Nombre archivo: ".$registro['archivo_nombre'];
  63.         echo "<br> Tipo archivo (MIME formato): ".$registro['archivo_tipo'];
  64.         echo "<br> Peso: ".$registro['archivo_peso']." bytes.<br><br>";
  65.     }
  66.  
  67. ?>
  68. /////////////////////////////////////////////////////////////
  69. ////ver.php/////
  70.  
  71. <?php
  72. if(isset($_GET['id'])) {
  73.  
  74.     // you may have to modify login information for your database server:
  75.     $conexion=mysql_connect("localhost","root","") or die ("no se ha podido conectar a la BD");
  76.  
  77.     mysql_select_db("jose") or die ("no se ha podido seleccionar la BD");
  78.  
  79.     $sql = "SELECT archivo_nombre,archivo_binario,archivo_tipo,archivo_peso FROM archivos WHERE id='".$_GET['id']."'";
  80.  
  81.     $consulta = mysql_query($sql,$conexion);
  82.  
  83.     $datos = mysql_result($consulta,0,"archivo_binario");
  84.     $tipo = mysql_result($consulta,0,"archivo_tipo");
  85.     $nombre = mysql_result($consulta,0,"archivo_nombre");
  86.     $peso = mysql_result($consulta,0,"archivo_peso");
  87.  
  88.  
  89.     header("Content-type: $tipo");
  90.     header("Content-length: $peso");
  91.     header("Content-Disposition: inline; filename=$nombre");
  92.  
  93.    echo $datos;
  94.  
  95. }
  96. ?>
__________________
www.josealexis.net
  #2 (permalink)  
Antiguo 28/09/2011, 19:18
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: problema con visualizacion de imagenes

Código PHP:
Ver original
  1. $binario_contenido = addslashes(fread(fopen($binario_nombre_temporal, "rb"), filesize($binario_nombre_temporal)));

Supongo que si modificas un dato "binario" con funciones de texto (addslashes) puede ser la causa de que no se guarde correctamente la imagen.

Que tipo de campo es archivo_binario?
__________________
- León, Guanajuato
- GV-Foto

Etiquetas: imagenes, mysql
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 12:35.