Inicio > MySQL, PHP > SUBIR IMÁGENES A MySQL CON PHP Ejemplo 1

SUBIR IMÁGENES A MySQL CON PHP Ejemplo 1

He estado buscando como subir imágenes a MySQL con PHP y he encontrado los siguientes ejemplos:

Codigo SQL

Código: [Seleccionar]

CREATE TABLE `imagenes` (
`id` int(11) NOT NULL auto_increment,
`nombre` varchar(30) NOT NULL default '',
`tipo` varchar(30) NOT NULL default '',
`descripcion` varchar(255) NOT NULL default '',
`fecha` varchar(255) NOT NULL default '',
`ip` varchar(255) NOT NULL default '',
`imagen` mediumblob 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,…

UPLOADER

<?PHP
//Conexion
if (isset($_POST[‘enviar’]))
{
$tipos = array(“image/gif”,“image/jpeg”,“image/bmp”,“image/pjpeg”);
$maximo
= 102400; //100Kb
if (
is_uploaded_file($_FILES[‘imagen’][‘tmp_name’]))
{
// Se ha subido?
if (
in_array($_FILES[‘imagen’][‘type’],$tipos) && $_FILES[‘imagen’][‘size’] <= $maximo)
{
// Es correcto?
$fp
= fopen($_FILES[‘imagen’][‘tmp_name’], ‘r’); //Abrimos la imagen
$imagen = fread($fp, filesize($_FILES[‘imagen’][‘tmp_name’])); //Extraemos el contenido de la imagen
$imagen = addslashes($imagen);
fclose($fp); //Cerramos imagen
if(!
get_magic_quotes_gpc())
$nombre = addslashes($_FILES[‘imagen’][‘name’]); // Arreglamos el Nombre
else
$nombre = $_FILES[‘imagen’][‘name’];

$query = “INSERT INTO `imagenes` (imagen,nombre,tipo,descripcion,fecha,ip) VALUES “;
$query.= “(‘”.$imagen.“‘,'”.$nombre.“‘,'”.$_FILES[‘imagen’][‘type’].“‘,'”;
$query.= mysql_real_escape_string($_POST[‘descripcion’]).“‘,'”;
$query.= date(“d/m/y”,time()).“‘,'”.$_SERVER[‘REMOTE_ADDR’].“‘)”;

if (mysql_query($query)) echo src=”visor.php?mostrar=’.mysql_insert_id().‘”>’;
else echo mysql_error();
} else echo “El formato del archivo no es correcto o es mayor de 100Kb”;
} else echo “La imagen no ha sido subida”;
}
//Desconexion DB
?>
enctype=”multipart/form-data” method=”POST”>
Imagen: type=”file” name=”imagen” />

Breve Descripcion: (Opcional)

type=”submit” name=”enviar” value=”Enviar” />

VISOR
<?PHP
if (is_numeric($_GET[‘mostrar’]))
{
// Conexion a la Base de Datos
$query = mysql_query(“SELECT * FROM `imagenes` WHERE id = ‘”.$_GET[‘mostrar’].“‘”) or exit();
if (!mysql_num_rows($query)) exit(header(“HTTP/1.0 404 Not Found”));
$datos = mysql_fetch_array($query);
header(“Content-Type: “.$datos[‘tipo’]);
echo $datos[‘imagen’];
//Desconexion
}
else
header(“HTTP/1.0 404 Not Found”);
?>

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.

Categorías:MySQL, PHP Etiquetas: ,
  1. 16 septiembre 2011 a las 8:39

    Hola genio! Mira tengo una duda , yo tengo que crear un formulario para dar de alta un cliente, en el cual debo tener, nombre apellido, direccion, telefono, dni y un campo para cargarle una foto del cliente, el form ya esta completo y el campo que carga la foto es este

    Como haria para cargar ese archivo en la misma BD en donde estan los demas datos (apellido, nombre , etc) y luego poder traer la imagen devuelta para mostrarla?

    Desde ya muchas gracias.. Espero su respuesta

  1. No trackbacks yet.

Responder

Por favor, inicia sesión con uno de estos métodos para publicar tu comentario:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: