|
|
|||||||||||||||||||||||||
|
IntroducciónComo parte de la despedida de eiial pues debido a razones personales se aleja de este mundo de la programación por un tiempo, nos ha dejado un código perl el cual convertí en un sencillo tutorial. En este tutorial vamos a aprender a implementar un sencillo código para guardar imagenes en nuestro database las cuales más adelante podremos desplegar con ayuda de otro pequeño script. La tablaLo primero que debemos de crear es la tabla en nuestra base de datos de la siguiente manera:
CREATE TABLE `subir_imagenes` (
`id` int(11) unsigned NOT NULL auto_increment, `nombre` varchar(255) default NULL, `tipo` varchar(255) default NULL, `imagen` longblob NOT NULL, KEY `id` (`id`) ) TYPE=MyISAM DEFAULT CHARSET=latin1 Vemos como la columna imagen la ponemos como longblob pero les recomiendo que cambien esto a blob si las imagenes que van a guardar son de tamaño pequeñas (menores a 70kb), si son menores a 16mb entonces usen mediumblob o de lo contrario dejenlo como esta. Guardar las imagenes en el databaseVamos a crear un archivo perl al cual vamos a llamar guardar.pl donde pondremos el siguiente código:
#!/usr/bin/perl
use strict; # Eial 2004 la versión orginial se encuentra en http://perlenespanol.baboonsoftware.com/foro en sector intermedio. print "Content-type: text/html\n\n"; my $archivo = param('archivo'); if (length($archivo) > 0) { # Configurar la linea siguiente my $m = DBI->connect('DBI:mysql:database=test;host=localhost','root','') or die('No se puede conectar con la base de datos'); my $nombre = param('nombre'); my $tipo = uploadInfo($archivo)->{'Content-Type'}; binmode($archivo); my $imagen; while (read($archivo,$_,1024)) {$imagen .= $_}; close($archivo); if ($nombre) { if ($m->selectrow_array("SELECT nombre FROM subir_imagenes WHERE nombre='$nombre'")) { print 'El nombre de la imagen esta actualmente en uso'; } $m->do("INSERT INTO subir_imagenes(nombre,tipo,imagen) VALUES(" . $m->quote($nombre) . ",'$tipo'," . $m->quote($imagen) . ")"); my $id = $m->selectrow_array("SELECT id FROM subir_imagenes WHERE id=LAST_INSERT_ID()"); $m->disconnect; print <<HTML; } else { print <<HTML; } exit; Recuerden configurar la llamada al módulo DBI con los parametros correspondientes a su base de datos. Para mayores detalles checa el tutorial Como conectarte a tu database. Llamando a la imagenYa que tenemos nuestras imagenes guardadas en nuestro database ahora debemos de crear un código para desplegar las imagenes. Para esto vamos a crear un archivo perl al cual vamos a llamar imagen.pl con el siguiente código:
#!/usr/bin/perl
use strict; # Eial 2004 la versión orginial se encuentra en http://perlenespanol.baboonsoftware.com/foro en sector intermedio. # Configurar la linea siguiente my $m = DBI->connect('DBI:mysql:database=test;host=localhost','root','') or die('No se puede conectar con la base de datos'); my $id = param('id'); my $nombre = param('nombre'); my $datos = ($id) ? 'id=' . $m->quote($id) : 'nombre=' . $m->quote($nombre); my $imagen = $m->selectrow_hashref("SELECT imagen,tipo FROM subir_imagenes WHERE " . $datos); print ((${$imagen}{'tipo'}) ? "Content-type: ${$imagen}{'tipo'}\n\n" : "Content-type: text/html\n\nImagen inexistente o Tipo de dato no soportado"); binmode(STDOUT); print ((${$imagen}{'tipo'}) ? ${$imagen}{'imagen'} : ''); exit; Recuerda configurar nuevamente la linea donde se llama al módulo DBI para que tenga los parametros que corresponden a tu database. Este archivo perl que acabamos de crear lo podemos ejecutar de dos maneras y dependen de como queremos llamar a nuestras imagenes:
Listo ya tenemos completo nuestros archivo y estamos preparados para guardar imagenes en nuestro database, ahora sólo queda de tu parte como utilizar este código. Notas FinalesPara ver el post original de eiial con el código que se muestra aquí, lo pueden hacer en: El código mostrado en este tutorial fue creado en un 100% por eiial y fue donado a "Perl en Español".
|
||||||||||||||||||||||||
|
|||||||||||||||||||||||||