Ver Mensaje Individual
  #5 (permalink)  
Antiguo 19/12/2006, 16:13
Raules
 
Fecha de Ingreso: mayo-2005
Ubicación: Murcia
Mensajes: 319
Antigüedad: 19 años
Puntos: 0
Re: Upload Imagenes

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