miércoles, 23 de noviembre de 2011

Cargar y descargar imagenes desde una base de datos sql

Para aquellos que no saben, las imagenes se pueden cargar a una base de datos para reducir esparcio de disco. Me costo mucho encontrarlo por lo que les voy a decir como hacerlo de una manera sencilla.
Lo primero a hacer es:

1)crear la base de datos con la tabla Fotos con los campos: idfoto(que es el id de la foto), contenidoFoto (que va a ser longblob) y tipoFoto (que va a ser texto)
2)crearmos el archivo imagen.php con el siguiente contenido:

include('Conexion.php');
$consulta = "SELECT  contenidoFoto,tipoFoto FROM Fotos f WHERE f.idfoto = "  .$_REQUEST['ID'] ;  /*aca pone la id de tu propiedad que le enviamos puede ser por GET tmb */
$res = mysql_query($consulta); /* guardamos en res nuestra consulta y la ejecutamos*/
$row = mysql_fetch_array($res); /*la convertimos en un arreglo*/
$foto = $row['contenidoFoto'];
header("'Content-Type: image/".$row['tipoFoto']."'");
echo $foto;
/*y aca imprimimos la header(impresindible con el tipo de la foto que guardamos(jpeg, gif etc
?>


Después en mi html donde quiero mostrar la imagen lo que hago es 

<img alt=" " src="/imagen.php" />
<img src="img.php?id='.$reg['idpropiedad'].'"
 height=40 width=40>
-------------------------------------------------------------------------------
Para Subir las imagenes a la base de datos tenemos que crear el php con el formulario

<?
if(isset($_POST['upload']))
{  
if(!(empty( $_FILES['userfile']['name'])))
{     $propie = $_GET['mod'] ;
        $fileName = $_FILES['userfile']['name'];
        $tmpName  = $_FILES['userfile']['tmp_name'];
        $fileSize = $_FILES['userfile']['size'];
        $fileType = $_FILES['userfile']['type'];
       
        $fp = fopen($tmpName, 'r');
        $content = fread($fp, $fileSize);
        $content = addslashes($content);
        fclose($fp);
       
        if(!get_magic_quotes_gpc())
        {
            $fileName = addslashes($fileName);
        }
       

      include "conexion.php";
       
       
        $imagen =mysql_query( "UPDATE propiedades set contenidoFoto='$content', tipoFoto='$fileType', observaciones='$fileSize'
             
                 where idpropiedad ='$propie'"
) or die('Error, al subir la imagen'); 
      
       
      }  else{echo ('<script type="text/javascript"> alert("se debe ingresar una imagen") </script>');
}   }     
?>

TODO esto es el php que lo que hace en si es transformar la imagen en codigo, calcula el tamaño, el nomre y el tipo de la foto y lo guarda en la base de datos
en el id de la propiedad.
y dsp tendro del html va el formulario que toma la imagen (todo esto va en el mismo archivo
/* action esta libre para que lo envie a la misma pagina que estoy situado*/

<form action="" enctype="multipart/form-data" method="post" name="uploadform">
<table border="0" cellpadding="1" cellspacing="1" class="box" style="width: 350px;"><tbody>
<tr>        <td width="246"><input name="MAX_FILE_SIZE" type="hidden" value="2000000" /><input class="box" id="userfile" name="userfile" type="file" /></td>       <td width="80"><input class="box" id="upload" name="upload" type="submit" value="  Upload  " /></td>     </tr>
</tbody></table>
</form>