+ Reply to Thread
Results 1 to 6 of 6

Thread: [TUTORIAL]Subir archivos a Base de datos MySQL

  1. #1
    breedx is offline x10Hosting Member breedx is an unknown quantity at this point
    Join Date
    Jan 2009
    Posts
    4

    Thumbs up [TUTORIAL]Subir archivos a Base de datos MySQL

    Este tuto es para que aprendais a hacer un Upload de archivos mediante PHP y guardar los datos en una base de datos MySQL.

    Comenzare comentando que en este caso vamos a tener que recurrir a un tipo de campo MySQL no muy utilizado en el ambito de nuestra comunidad asi que os voy a dar de paso varias indicaciones sobre el campo BLOB.

    Este tipo de campo, BLOB, permite guardar contenido de tipo Binario, esto quiere decir que podemos guardar imagenes, archivos de sonido y multimedia (no todo tipo de archivo, por eso yo solo voy a trabajar con imagenes).

    Codigo SQL
    PHP Code:
    CREATE TABLE `imagenes` (
      `
    idint(11NOT NULL auto_increment,
      `
    nombrevarchar(30NOT NULL default '',
      `
    tipovarchar(30NOT NULL default '',
      `
    descripcionvarchar(255NOT NULL default '',
      `
    fechavarchar(255NOT NULL default '',
      `
    ipvarchar(255NOT NULL default '',
      `
    imagenmediumblob NOT NULL,
      
    PRIMARY KEY  (`id`)
    ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1
    Como veis he usado un campo de tipo mediumblob pero tambien podeis blob, tinyblob, longblob,...

    upload.php
    PHP Code:
    <?PHP
    PHP Code:
    [b]//Conexion[/b]
    [b]if (isset($_POST['enviar'])) {[/b]
    [
    b]    $tipos = array("image/gif","image/jpeg","image/bmp","image/pjpeg");[/b]
    [
    b]    $maximo 102400//100Kb[/b]
    [b]    if (is_uploaded_file($_FILES['imagen']['tmp_name'])) { // Se ha subido?[/b]
    [b]        if (in_array($_FILES['imagen']['type'],$tipos) && $_FILES['imagen']['size'] <= $maximo) { // Es correcto?[/b]
    [b]            $fp fopen($_FILES['imagen']['tmp_name'], 'r'); //Abrimos la imagen[/b]
    [b]            $imagen fread($fpfilesize($_FILES['imagen']['tmp_name'])); //Extraemos el contenido de la imagen[/b]
    [b]            $imagen addslashes($imagen);[/b]
    [
    b]            fclose($fp); //Cerramos imagen[/b]
    [b]            if(!get_magic_quotes_gpc())    $nombre addslashes($_FILES['imagen']['name']); // Arreglamos el Nombre[/b]
    [b]            else $nombre $_FILES['imagen']['name'];[/b]
    [
    b]            $query "INSERT INTO `imagenes` (imagen,nombre,tipo,descripcion,fecha,ip) VALUES ";[/b]
    [
    b]            $query.= "('".$imagen."','".$nombre."','".$_FILES['imagen']['type']."','";[/b]
    [
    b]            $query.= mysql_real_escape_string($_POST['descripcion'])."','";[/b]
    [
    b]            $query.= date("d/m/y",time())."','".$_SERVER['REMOTE_ADDR']."')";    [/b]
    [
    b]            if (mysql_query($query)) echo '<img src="visor.php?mostrar='.mysql_insert_id().'">';[/b]
    [
    b]            else echo mysql_error();    [/b]
    [
    b]        } else echo "El formato del archivo no es correcto o es mayor de 100Kb";[/b]
    [
    b]    } else echo "La imagen no ha sido subida";[/b]
    [
    b]}[/b]
    [
    b]//Desconexion DB[/b]
    [b]?>[/b]
    [b]<form enctype="multipart/form-data" method="POST">[/b]
    [b]Imagen: <input type="file" name="imagen" /><br />[/b]
    [b]Breve Descripcion: <input type="text" name="descripcion" /> <i>(Opcional)</i><br /><br />[/b]
    [b]<input type="submit" name="enviar" value="Enviar" />[/b]
    [b]</form>[/b] 
    visor.php
    PHP Code:
    <?PHP
    PHP Code:
    [b]if (is_numeric($_GET['mostrar'])) {[/b]
    [
    b]    // Conexion a la Base de Datos[/b]
    [b]    $query mysql_query("SELECT * FROM `imagenes` WHERE id = '".$_GET['mostrar']."'") or exit();[/b]
    [
    b]    if (!mysql_num_rows($query)) exit(header("HTTP/1.0 404 Not Found"));[/b]
    [
    b]    $datos mysql_fetch_array($query);[/b]
    [
    b]    header("Content-Type: ".$datos['tipo']);[/b]
    [
    b]    echo $datos['imagen'];[/b]
    [
    b]    //Desconexion[/b]
    [b]} else header("HTTP/1.0 404 Not Found");[/b]
    [
    b]?>[/b] 
    Creo que el codigo se explica bastante por si mismo y por los comentarios que he dejado en las lineas, aún así podeis preguntarme cualquier cosa que querais.

    Si no os funciona en vuestro servidor es porque la version de PHP que usais no es compatible con $_FILES, por tanto debereis cambiar $_FILES por $_HTTP_POST_FILES y supongo que no habra problemas.bueno adios
    Salu2

  2. #2
    hezuo's Avatar
    hezuo is offline x10 Sophmore hezuo is an unknown quantity at this point
    Join Date
    Dec 2007
    Location
    Huascar, Santa Anita
    Posts
    174

    Re: [TUTORIAL]Subir archivos a Base de datos MySQL

    asu que buen dato! gracias por tu aporte, ahora tratare de implementarlo en mi sitio

  3. #3
    rikardo is offline x10Hosting Member rikardo is an unknown quantity at this point
    Join Date
    Jun 2008
    Posts
    4

    Re: [TUTORIAL]Subir archivos a Base de datos MySQL

    wow esto era lo que estaba buscano boy a ver si me funciona gracias tio

  4. #4
    camilo1987 is offline x10Hosting Member camilo1987 is an unknown quantity at this point
    Join Date
    Jun 2008
    Posts
    30

    Re: [TUTORIAL]Subir archivos a Base de datos MySQL

    muchos gracias

  5. #5
    detodoseries's Avatar
    detodoseries is offline Community Advocate detodoseries is an unknown quantity at this point
    Join Date
    Oct 2007
    Location
    españa
    Posts
    1,300

    Re: [TUTORIAL]Subir archivos a Base de datos MySQL

    un buen aporte a mas de uno le alegraras el dia cuando se tope con este post

    saludos

  6. #6
    DarkRuisu is offline x10Hosting Member DarkRuisu is an unknown quantity at this point
    Join Date
    Sep 2007
    Posts
    2

    Re: [TUTORIAL]Subir archivos a Base de datos MySQL

    wow!! grax man!, justo tenia dudas de como se hacia algo asi

+ Reply to Thread

Similar Threads

  1. Problema con la base de datos MySQL
    By magico10 in forum Soporte
    Replies: 10
    Last Post: 10-22-2008, 10:44 PM
  2. Replies: 14
    Last Post: 09-29-2008, 07:07 PM
  3. no puedo borrar base de datos mysql
    By natsirt in forum Soporte
    Replies: 3
    Last Post: 09-11-2008, 05:35 PM
  4. New Site-Suggestions?
    By mnoutside in forum Review My Site
    Replies: 9
    Last Post: 08-27-2008, 07:01 AM
  5. 1 Base de Datos no se muestra o.O
    By Alexa in forum Soporte
    Replies: 3
    Last Post: 12-27-2007, 04:34 PM

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
x10hosting free hosting for the masses
dedicated servers