Este codigo está en el faq que lo hizo CLUSTER pero no me acuerdo de la direccion pero como lo tengo en mi directorio te lo paso.
En la base de datos tienes que poner:
Código:
CREATE TABLE IF NOT EXISTS `productos` (
`id` int(6) unsigned NOT NULL auto_increment,
`archivo_nombre` varchar(50) NOT NULL default '',
`archivo_peso` varchar(30) NOT NULL default '',
`archivo_tipo` varchar(30) NOT NULL default '',
`archivo_binario` longblob NOT NULL,
PRIMARY KEY (`id`)
Creas el formulario:
Código HTML:
<form enctype="multipart/form-data" method="post" ACTION="imagen_insertar.php" >
<input type="file" name="archivo" size="30">
<input type="submit" name="submit" value="insertar" style="height:17px" />
El codigo de insertar:
Código PHP:
<?php
// INICIAS LA SESION
session_start();
//establece una conexión con la base de datos.
$conexion = mysql_connect("localhost","usuario","pass") or die("No se pudo realizar la conexion con el servidor.");
mysql_select_db("nombre_BD",$conexion) or die("No se puede seleccionar BD"); // nombre_bd es el nombre de la Base de datos
// archivo temporal (ruta y nombre).
$binario_nombre_temporal=$_FILES['archivo']['tmp_name'] ;
// leer del archvio temporal .. el binario subido.
// "rb" para Windows .. Linux parece q con "r" sobra ...
if (!empty($_FILES['archivo']['name'])){
$binario_contenido = addslashes(fread(fopen($binario_nombre_temporal, "rb"), filesize($binario_nombre_temporal)));
} else {
$binario_contenido=NULL;
}
// 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 tabla (id, archivo_binario,archivo_nombre,archivo_peso,archivo_tipo) 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: $HTTP_REFERER"); // si ha ido todo bien
exit;
?>
Y para hacer la consulta:
Código PHP:
<?php
mysql_connect("localhost","usuario","pass") or die ("no se ha podido conectar a la BD");
mysql_select_db("nombre_BD") or die ("no se ha podido seleccionar la BD");
$sql = "SELECT * FROM tabla WHERE id='$id'";
$consulta = mysql_query($sql) or die ("No se pudo ejecutar la consulta");
While ($row=mysql_fetch_assoc($consulta)){
echo "<img src=\"pachecodesign.php?id=".$row['id']."\">";
}
?>
El archivo pachecodesign.php tiene que tener el siguiente codigo:
Código PHP:
<?php
// OJO, sólo funciona con imagnes en formato JPEG ...
if(isset($_GET['id'])) {
$conexion=mysql_connect("localhost","usuario","pass") or die ("no se ha podido conectar a la BD");
mysql_select_db("nombre_BD") or die ("no se ha podido seleccionar la BD");
$sql = "SELECT archivo_binario,archivo_tipo,archivo_nombre FROM tabla WHERE id='".$_GET['id']."'";
$consulta = mysql_query($sql,$conexion);
$imagen = mysql_result($consulta,0,"archivo_binario");
// Envio cabeceras al navegador .. se indica que lo "que vá" es una imagen de formato MIME JPEG
Header ("Content-type: image/jpeg");
// Generar el thumbnail:
// Se crea la imagen desde el campo binario de la BD
$img = imagecreatefromstring($imagen);
// Tamaño del Thumbanil (de la imagen a generar ..)
$picsize = 123;
// Se obtienen los datos del ancho y alto de la imagen.
$new_w = imagesx($img);
$new_h = imagesy($img);
// Se calcula la relación alto/ancho
$aspect_ratio = $new_h / $new_w;
// Se ajusta al nuevo tamaño
$new_w = $picsize;
$new_h = abs($new_w * $aspect_ratio);
// Se crea la mascara de la imagen nueva
$dst_img = imagecreate($new_w,$new_h);
// Se copia y reajusta el nuevo tamaño en la nueva imagen.
imagecopyresized($dst_img,$img,0,0,0,0,$new_w,$new_h,imagesx($img),imagesy($img));
// Se entrega al buffer de salida (navegador en este caso) la imagen en formato JPEG
// El tercer parámetro (100) indica la calidad de la imagen: en porcentaje relación calidad/peso imagen.
imagejpeg($dst_img,'',100);
}
?>
Un saludo