Me intereso el tema, así que hice un script basándome en el suyo para subir imágenes a la base de datos.
SQL
Código SQL:
Ver originalCREATE TABLE `base_datos`.`imagenes` (
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`content` LONGBLOB NOT NULL ,
`type` VARCHAR( 10 ) NOT NULL
) ENGINE = MYISAM ;
cargar.html
Código HTML:
Ver original<form action="procesar.php" method="post" enctype="multipart/form-data"> <input type="file" name="imagen" /> <input type="submit" name="cargar" value="Subir"/>
conexion_db.php Código PHP:
<?php
/**
* Genera el enlace a la base de datos
* para futuras consultas.
*/
if(!isset($conexion)){
$conexion = FALSE;
}
/**
* Realizar la conexion a la base de datos
*/
function conexionDB(){
global $conexion;
if( $conexion )
return $conexion;
// Variables a sustituir
$servidor = 'localhost';
$usuario = 'root';
$clave = '';
$base_datos = 'base_datos';
$conexion = mysql_connect($servidor, $usuario, $clave) or die("Imposible conectar a MYSQL");
mysql_select_db($base_de_datos, $conexion);
return $conexion;
}
/**
* Termina la conexion a la base de datos;
*/
function terminarConexionDB(){
global $conexion;
if( $conexion != FALSE )
mysql_close($conexion);
$conexion = FALSE;
}
?>
procesa.php Código PHP:
<?php
include_once ('conexion_db.php');
// Verifica que se ha enviado el formulario
if(!(isset($_POST["cargar"])))
exit();
$tmpName = $_FILES["imagen"]["tmp_name"];
$type = $_FILES['imagen']['type'];
// Carga archivo temporal
$fopen = fopen($tmpName, "r");
$file = fread($fopen, filesize($tmpName));
$content = addslashes($file);
fclose($fopen);
// Conecta a base de datos
conexionDB();
// Sube imagen a la base de datos
$query = mysql_query("INSERT INTO base_datos.imagenes (content, type) VALUES ('$content', '$type')", $conexion);
if(mysql_errno($conexion)){
print mysql_errno($conexion);
}else{
print 'Se ha subido la imagen a la base de datos, puedes verla pulsando <a href="imagen.php?id='.mysql_insert_id().'">aqui</a>';
}
// Cierra base de datos
terminarConexionDB();
?>
imagen.php Código PHP:
<?php
if(!isset($_GET['id']))
exit();
include_once ('conexion_db.php');
$id = $_GET['id'];
// Conecta a base de datos
conexionDB();
$query = mysql_query("SELECT * FROM base_datos.imagenes WHERE id = $id", $conexion);
// Cierra base de datos
terminarConexionDB();
$row = mysql_fetch_object($query);
header('Content-type: $row->type');
print $row->content;
?>
Creo que es innecesario decir que es un script bastante básico, falta validar muchas cosas y tratar errores... en fin, espero que le sirva.