|
Un archivo de imagen, asi como cualquier adjunto que se quiera levantar al servidor, es incluído en un item en un formulario HTML que será procesado después por un script php.
Asi se definen los items en la base de datos MySQL para contener la imágen junto con sus carácterísticas, que van a ser necesarias luego para mostrarla al navegador cliente.
ancho smallint(6),
alto smallint(6),
formato enum('gif','jpeg','png'),
imagen blob,
Es obligatorio para incluír archivos en el envío al servidor, incluir el parámetro enctype="multipart/form-data" en el formulario, sin este parámetro no funcionará.
El INPUT con type=file generará en el formulario el campo de entrada para el path del archivo y el botón de "Examinar" para realizar la búsqueda del archivo en el disco.
<form name="form" Action="grabarjpg.php" Method="POST" enctype="multipart/form-data">
<input type="file" name="miimagen">
<input type="submit" name="grabar" value="Grabar">
</form>;
El script php grabarjpg.php para recibir y grabar la imagen en la base de datos es este:
<?php
$miimagen = $_FILES['miimagen']['tmp_name']; // El archivo se recibe en el vector $_FILES
$size = GetImageSize($miimagen); // Obtengo las propiedades del archivo de imagen
$ancho = $size[0];
$alto = $size[1];
switch ($size[2]) :
case 1: $formato = "gif";
case 2: $formato = "jpeg";
case 3: $formato = "png";
endswitch;
// Ahora abro y leo la imagen como un archivo y agrego escape para evitar errores de dato.
$imagen = addslashes(fread(fopen($miimagen, "r"), filesize($miimagen)));
// Y, grabo la imágen en la base de datos en el item definido como BLOB
$result = mysql_query("INSERT INTO mitabla (..., imagen, formato, ancho, alto, ...)
VALUES (..., '".$imagen."','".$formato."','".$ancho."','".$alto"', ...");
?>
Esta receta para levantar tus imágenes a la base de datos debería funcionar tal cual, solamente copia y pega el texto en un archivo php en tu directorio del servidor.
$
1,489.99
| $
7,899.99
| $
6,899.99
| $
2,899.00
|
Volver al comienzo |
|
El procedimiento es casi el mismo que para la base de datos que recién vimos, en este caso el archivo recibido se copiará a una carpeta. El formulario es exactamente el mismo que en el caso del ejemplo anterior.
El script php grabar.php para recibir y guardar la imágen o archivo adjunto en una carpeta dentro del servidor es este:
<?php
$uploads_dir = '/uploads'; // Directorio en el servidor donde van a quedar los archivos.
foreach ($_FILES["pictures"]["error"] as $key => $error) :
if ($error == UPLOAD_ERR_OK) :
$tmp_name = $_FILES["pictures"]["tmp_name"][$key];
$name = $_FILES["pictures"]["name"][$key];
move_uploaded_file($tmp_name, "$uploads_dir/$name");
endif;
endforeach;
?>
Volver al comienzo |
|
Para poder ver la imagen guardada en la base de datos, hay que indicarle al explorador que se inserta una imagen incluyendo una etiqueta <img>. Una vez leido el registro de la base de datos, utilizamos los datos del mismo para armar la etiqueta:
<img src='verfoto.php?id=<?php echo($record_ID); ?>' width=<?php echo($ancho); ?> height=<?php echo($alto); ?> >
y, además, necesitamos el pequeño programa verfoto.php que lea la base de datos y entregue al explorador el contenido de la imagen en el formato en que este la espera.
Este programa puede funcionar en tu instalación tal cual, con unos pequeños cambios:
<?php
// Lee el registro y envia la imagen al campo IMG del explorador luego de remover los escape chars.
$id = $_GET['id'];
$result = mysql_query("SELECT formato, imagen FROM mitabla WHERE ID = ".$id);
if(mysql_num_rows($res9) == 0) :
echo ("Error - No se encontraron sus datos");
else :
$row9 = mysql_fetch_array($result);
Header( "Content-type: image/".$row9['formato']);
echo stripslashes($row9['imagen']);
endif;
?>
Volver al comienzo |