Ver Mensaje Individual
  #1 (permalink)  
Antiguo 16/07/2009, 15:57
javihb36
 
Fecha de Ingreso: julio-2009
Mensajes: 4
Antigüedad: 14 años, 9 meses
Puntos: 0
mostrar imagenes blob

Hola vereis, tengo una preguntas sobre las imagenes insertadas en mysql como blob, mi pregunta es si se pueden insertar imagenes en campos blob aunque en la base de datos no exintan los campos para el peso y el tipo de archivo?

Mi problema es que me han pasado una aplicacion que inserta, modifica, borra y muestra unas fichas que se componen de imagenes y texto, las fichas que hay en la base de datos y que habian sido insertadas antes de que yo tuviera este proyecto se muestran perfectamente (texto e imagenes) pero cuando intento insertar una nueva ficha me lo inserta bien (todos los campos de texto tienen su contenido y en los campos de las imagenes me sale '[BLOB - 15.1 KB]') pero a la hora de mostar la ficha solo me muestra los campos de texto y las imagenes no me salen, mejor dicho me sale un borde negro border='1' (que tengo puesto en los estilos para las imagenes) pero no la imagen....se supone que si en la base de datos en el campo de la imagen tiene contenido '[BLOB - 15.1 KB]' es que se ha insertado bien no?

a ver si me podeis decir algo.....gracias

os pongo el codigo que uso


input donde cargo la imagen
Código HTML:
<input type="hidden" name="MAX_FILE_SIZE" value="<?php echo $_SESSION['maxsize'];?>">
<input name="situation" type="file" class="fondo_campo_insert" id="situation" value="<?php echo $_POST['situation']; ?>" maxlength="8"> 
tratamiento de las fotos
Código PHP:
$_SESSION['yac_id']=mysql_insert_id(); //devuelve el ultimo yac_id del INSERT.


//TRATAMIENTO DE LAS FOTOS

require_once ('manejo_fotos.php');
$ancho_fijo 300//ancho de las fotos optimizadas en pixels.
$temp_foto 'img.jpg'//foto temporal reducida.

$campo_actual "situation";
$controlcampo_lleno($campo_actual);
if (
$control==0)
{
    if (
tiene_extension_valida($_FILES[$campo_actual]['name']))
    {      
resize ($campo_actual,$ancho_fijo);  //devuelve 'img.jpg'
        
subir_foto_sql($campo_actual,$_SESSION['yac_id'],'img.jpg');

    }
    else 
    {    
$redir="<meta http-equiv=\"refresh\" content=\"5; URL=modify1.php\"><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><table width=\"80%\"  border=\"0\" align=\"center\" cellpadding=\"0\" cellspacing=\"0\" class=\"bd_ayuda\"><tr><td align=\"center\" valign=\"middle\"><div align=\"center\"><p>&nbsp;</p><p>Has seleccionado una extension de archivo no válida en el campo $campo_actual. Solo los formatos de archivo '.jpg' ó '.jpeg' estan permitidos</p></div></td></tr></table>";
        print 
$redir;
        die();
    }
}
else
{
if  (
$control==1)
    {
        
$redir="<meta http-equiv=\"refresh\" content=\"5; URL=modify1.php\"><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><table width=\"80%\"  border=\"0\" align=\"center\" cellpadding=\"0\" cellspacing=\"0\" class=\"bd_ayuda\"><tr><td align=\"center\" valign=\"middle\"><div align=\"center\"><p>&nbsp;</p><p>El archivo ".$_FILES[$campo_actual]['name']." que intentas subir es mayor que 200kb, selecciona otro más pequeño</p></div></td></tr></table>";
        print 
$redir;
        die();
    }

este es el archivo manejo_fotos.php
Código PHP:
<?php
function campo_lleno ($campo)
{
    
$nombre $_FILES[$campo]['name'];
    if (
$nombre !='')
    {    
        if (
$_FILES[$campo]['size']!=0)
        {
        echo 
"el campo esta lleno <br>";
        return 
0;
        }
        else
        {    
Ha sido rechazado por tamaño
            
return 1;
        }
    } 
    else 
    {    
No ha seleccionado archivo alguno
        
return 2
    }
}

function 
tiene_extension_valida($nombre)
{
    
$extensiones=array("jpg","jpeg","JPG","JPEG");
    
$var=explode(".","$nombre");
    
$num=count($extensiones);
    
$valor=$num-1;
    for(
$i=0;$i<=$valor;$i++)
    {    if(
$extensiones[$i]==$var[1])
        {    return 
true;
            echo 
"tiene extension valida<br>";
            break;
        }
    }
    return 
false;
}

function 
resize ($campo_actual$ancho_fijo)
{
//    echo "foto_resize = $foto <br>";
    
$foto $_FILES[$campo_actual]['tmp_name'];
    
//$tamaño = $_FILES["$campo_actual"]['size'];
    
$im imagecreatefromjpeg($foto);
    
$arr=getimagesize($foto);
    
$ratio $arr[0]/$ancho_fijo;
//    echo "ratio = $ratio <br>";
    
$im2imagecreatetruecolor($ancho_fijo,$arr[1]/$ratio);
    
imagecopyresampled($im2,$im,0,0,0,0,$ancho_fijo,$arr[1]/$ratio,$arr[0],$arr[1]);
    
imageinterlace($im2,1);
    
imagejpeg ($im2,'img.jpg',75);
    
imagedestroy ($im);
    
imagedestroy ($im2);
}


function 
subir_foto_sql ($col_name$yac_id,$foto_temp)
{
    require_once (
'../configure.php');

//    $redir="<meta http-equiv=\"refresh\" content=\"5; URL=fill.php\"><br>Espera, serás redireccionado<br>";
    
    
    
$data "";
    
$userfile $foto_temp;
//    echo "userfile = $userfile <br>";
//    $tamano=$_FILES["$col_name"]["size"];
    
$tipo="image/pjpeg";
    
$fp fopen($userfile"rb");
    while(!
feof($fp))
    { 
        
$data .= fread($fp1024); 
    } 
    
fclose($fp); 
    
$data addslashes($data);
    
$data addcslashes($data"\0");
    require_once (
"../../../../Connections/db_connect.php");
    
mysql_select_db($_SESSION['db_name']);
    
$sql "UPDATE ".$_SESSION['nombre_ficha']." SET $col_name='$data' WHERE yac_id = ".$_SESSION['yac_id']."";
//    echo "UPDATE ".$_SESSION['nombre_ficha']." SET $col_name='data' WHERE yac_id = ".$_SESSION['yac_id']."<br>";
//    $res=mysql_query($sql,$_SESSION['connection'])or die (print $redir. mysql_error());
    
$res=mysql_query($sql,$_SESSION['connection']) ;
}
?>
y asi muestro las fotos
Código PHP:
   <?php print "<img src='printimage.php?col=representative&id=".$_SESSION['yac_id']."'  border='1'>"?>
y esto es el archivo printimage.php
Código PHP:
<?php
require_once ('../configure.php');
$link=mysql_connect("bd","user","password");
mysql_select_db(db);
$MainSQL="SELECT ".$_GET['col']." FROM ".$_SESSION['nombre_ficha']." where yac_id=".$_GET['id']."";
$res mysql_query($MainSQL,$link);
$row=mysql_fetch_array($res);
$data $row[0];
if (
strlen($data)<5){
    
$MainSQL="SELECT img FROM temp where id=1";
    
$res mysql_query($MainSQL,$link);
    
$row=mysql_fetch_array($res);
    
$data $row[0];
    }    
$tipo="image/jpeg";
header("Content-Type: "$tipo ."\n");
header("Content-Transfer-Encoding: binary\n"); 
header("Content-length: " strlen($data) . "\n"); 
print  
$data;
?>