Ver Mensaje Individual
  #1 (permalink)  
Antiguo 05/09/2009, 19:01
bigwhite
 
Fecha de Ingreso: agosto-2009
Mensajes: 247
Antigüedad: 14 años, 8 meses
Puntos: 10
Exclamación Problema al mostrar imagen almacenada en DB

Hola! como estan ?[B]

Tengo razones para querer almacenar imagenes en una DB, y eso hago (o intento) pero luego no puedo lograr que se vean (si quieto el "Header" se ve el binario... y pareciera que estuviera bien)

Para almacenarlas evitando el MYSQL injection (no uso funciones nativas de PHP porque estoy usando una clase que me maneja la DB), utilizo unas funciones que encontré que convierten una cadena binaria en otra en hexa y vice-versa.

Código PHP:
<?
...
$rs $DB->execute("SELECT url FROM imagenes'");
  
  foreach (
$rs as $row){    
    
$url $row['url'];    
    
$imagen file_get_contents($url);
    if (
strlen ($imagen)>300){
      
$imagen '0x'.strToHex($imagen);
      
$DB->execute ("INSERT IGNORE imagedump (url,imagen) VALUES ('$url','$imagen')"); 
      
sleep (0.11);
    }
  }
  
  
// permite almacenar en hexa un archivo binario (como una imagen)
  
function strToHex($string)
{
    
$hex='';
    for (
$i=0$i strlen($string); $i++)
    {
        
$hex .= dechex(ord($string[$i]));
    }
    return 
$hex;
}
 
?>
y para visualizarla.......hago esto:

Código PHP:
<?
  header
("Content-Type: image/jpeg");   //jpeg, png, gif, bmp

  
include "connect.php"// DB connect  

  
$rs $DB->execute("SELECT imagen FROM imagedump WHERE url LIKE '%.jpg'"); // url='blue.jpg'
  
$i $rs->fields['imagen'];
  
$imghexToStrsubstr ($i,2)  );
    
  
  echo 
strlen($img);

   function 
hexToStr($hex)
{
    
$string='';
    for (
$i=0$i strlen($hex)-1$i+=2)
    {
        
$string .= chr(hexdec($hex[$i].$hex[$i+1]));
    }
    return 
$string;
}

?>
y se ve una CRUZ alguna idea ? gracias!

EDIT: he aislado UN problema........ y ocurre al hacer un requiere_once() que hacia otro include.... en el cual habia un espacio por fuera de <? ?>

Ahora veo........que sigue fallando!

Última edición por bigwhite; 05/09/2009 a las 20:22