[PHP]Subir imagenes a tu Base de Datos (Guardando en binario)

Discussion in 'Programación & Programación Web' started by LOKITOZZZ, Aug 23, 2009.

  1. LOKITOZZZ

    LOKITOZZZ Usuario Casual nvl. 2
    17/41

    Joined:
    Jun 19, 2008
    Messages:
    1,876
    Likes Received:
    0
    Bueno lo primero que necesitamos es nuestra tabla
    Code:
    (CREATE) TABLE images (
      id int(10) unsigned NOT NULL auto_increment,
      image blob NOT NULL,
      name varchar(255) NOT NULL default '',
      weight varchar(15) NOT NULL default '',
      type varchar(25) NOT NULL default '',
      PRIMARY KEY  (id)
    ) TYPE=MyISAM;
    
    Luego el formulario por el cual se subira nuestra imagen
    formulario.php
    Code:
    <HTML>
    <HEAD>
    <TITLE>Binario a BD</TITLE>
    </HEAD>
    <BODY>
    <?php
    if (isset($_GET['proceso'])){
    echo $_GET['proceso']."<br>";
    }
    ?>
    <FORM enctype="multipart/form-data" method="post" action="insertar.php">
    Archivo: <INPUT type="file" name="archivo" size="30">
    <INPUT type="submit" name="submit" value="Subir archivo">
    </FORM>
    </BODY>
    </HTML>
    
    El archivo por el cual se insertara nuestra imagen en la Base de datos
    insertar.php
    Code:
    <?php
    //Primero, analiza si el archivo tiene nombre.  Si no fue asi, te remite de nuevo al formulario de inserción:
    // No se comprueba aqui si se ha subido correctamente.
    if (empty($_FILES['archivo']['name'])){
    header("location: formulario.php?proceso=falta_indicar_fichero"); //o como se llame el formulario ..
    exit;
    }
    //Establecemos una conexión con la base de datos.
    $Host = "localhost";
    $User = "root";
    $Password = "pass";
    $DataBase = "Midb";
    $conexion = mysql_connect($Host,$User,$Password)
    or die("No se pudo realizar la conexion con el servidor.");
    mysql_select_db($DataBase,$conexion)
    or die("No se puede seleccionar BD");
    $binario_nombre_temporal=$_FILES['archivo']['tmp_name'] ;
     
    $binario_contenido = addslashes(fread(fopen($binario_nombre_temporal, "rb"), filesize($binario_nombre_temporal)));
    // Obtener del array FILES (superglobal) los datos del binario .. nombre, tabamo y tipo.
    $binario_nombre=$_FILES['archivo']['name'];
    $binario_peso=$_FILES['archivo']['size'];
    $binario_tipo=$_FILES['archivo']['type'];
    //insertamos los datos en la BD.
    $consulta_insertar = "INSERT INTO images (id, image, name, weight, type) VALUES ('', '$binario_contenido', '$binario_nombre', '$binario_peso', '$binario_tipo')";
    mysql_query($consulta_insertar,$conexion)
    or die("No se pudo insertar los datos en la base de datos.");
    header("location: imagenes.php");  
    exit;
    ?>        
    
    Ahora el archivo para ver la imagen
    ver.php
    Code:
    <?php
    if(isset($_GET['id'])) {
    //Establecemos una conexión con la base de datos.
    $Host = "localhost";
    $User = "root";
    $Password = "pass";
    $DataBase = "Midb";
    $conexion = mysql_connect($Host,$User,$Password)
    or die("No se pudo realizar la conexion con el servidor.");
    mysql_select_db($DataBase,$conexion)
    or die("No se puede seleccionar BD");
    $sql = "SELECT name,image,type,weight FROM images WHERE id='".$_GET['id']."'";
        $consulta = mysql_query($sql,$conexion);
        $datos = mysql_result($consulta,0,"image");
        $tipo = mysql_result($consulta,0,"type");
        $nombre = mysql_result($consulta,0,"name");
        $peso = mysql_result($consulta,0,"weight");
     
        header("Content-type: $tipo");
        header("Content-length: $peso");
        header("Content-Disposition: inline; filename=$nombre");
     
       echo $datos;
    }
    ?>        
    
    Y por ultimo el archivo para ver todas las imagenes guardadas en nuestra base de datos
    imagenes.php
    Code:
    <?php
    //Establecemos una conexión con la base de datos.
    $Host = "localhost";
    $User = "root";
    $Password = "pass";
    $DataBase = "Midb";
    $conexion = mysql_connect($Host,$User,$Password)
    or die("No se pudo realizar la conexion con el servidor.");
    mysql_select_db($DataBase,$conexion)
    or die("No se puede seleccionar BD");
    $sql = "SELECT id,name,type,weight FROM images";
    $consulta = mysql_query($sql)
    or die ("No se pudo ejecutar la consulta");
        While ($registro=mysql_fetch_assoc($consulta)){
            echo "<img src=\"ver.php?id=".$registro['id']."\">";
            echo "<br> Nombre archivo: ".$registro['archivo_nombre'];
            echo "<br> Tipo archivo (MIME formato): ".$registro['archivo_tipo'];
            echo "<br> Peso: ".$registro['archivo_peso']." bytes.<br><br>";
        }
    ?>
    
    PD: Este Script no lo desarrolle yo pero tiene muchos cambios hechos por mi.
    PD: Clickeen mi pokemon...
     
  2. Maathy!

    Maathy! Usuario Maestro nvl. 6 ★ ★ ★ ★
    687/812

    Joined:
    Apr 25, 2009
    Messages:
    57,601
    Likes Received:
    2
    gracias men :)
     
  3. the kamikase

    the kamikase Usuario Maestro nvl. 6 ★ ★ ★ ★
    697/812

    Joined:
    Sep 19, 2008
    Messages:
    68,365
    Likes Received:
    42
    gracias man !
     
  4. Lion

    Lion Usuario Nuevo nvl. 1
    17/41

    Joined:
    Aug 10, 2009
    Messages:
    278
    Likes Received:
    16
    se agradece !"