automatizacion con perl

Ernesto Hernandez-Novich emhn at telcel.net.ve
Fri Aug 24 09:18:06 CDT 2001


On Fri, 24 Aug 2001 fperez at bqto.unexpo.edu.ve wrote:
> Tengo una pagina web que tiene una galeria de fotos y me gustaria saber
> si con perl puedo crear un cgi con el cual yo solo tenga que subir las
> fotosd nuevas y el me actualice la pagina automatica mente. Si es asi
> donde puedo encontar informacion.

man CGI (CGI es el módulo Perl para escribir CGIs :-)

Si $q es un CGI, entonces algo como

$q->filefield(name => 'thefile')

genera un campo en la forma para que puedas seleccionar el archivo local
(en el _cliente_) para que sea transferido al servidor. Luego, en la
parte del programa que lee el archivo debes crear un archivo temporal para
copiar la imagen en tránsito desde el browser, de forma que luego puedas
operar con ella en el serviro para hacer lo que quieras hacer con ella;
para eso puedes tener algo como

use POSIX;

my $n = tmpnam() . ".jpg";
$f = $q->param('thefile');
open C, ">$n";
binmode C;
my $b; print C $b while (read($f,$b,1024));
close C;

con lo que $n será el nombre de un archivo en el servidor que contiene
la "imagen" que te subieron a través de la página Web; de hecho, es un
nombre temporal que se _garantiza_ único (gracias a POSIX).

Es condición sine qua non que la forma sea del tipo MultiPart para poder
recibir uno o más archivos desde el browser. Cuando leas enteramente la
página de manual CGI no solamente comprenderás los fragmentos de código
que expongo, sino que descubrirás la forma de hacer una forma multi parte.

Nótese que _asumí_ que se trata de una imagen JPEG y por eso concatené
".jpg" como extensión del archivo temporal. En teoría el "archivo" leído
puede ser cualquier cosa, de manera que un programador competente
debe _verificar_ el tipo del archivo que le han enviado, lo cual no
es ningún problema si se usa $q->uploadInfo(...) apropiadamente.
-- 
Ernesto Hernández-Novich - Running Linux 2.4.8 i686 - Unix: Live free or die!
-----BEGIN GEEK CODE BLOCK-----
Version: 3.1
GCS/E d+(++) s+: a C+++$ UBLAVHIOSC*+++++$ P++++$ L+++$ E--- W+ N++ o K+++ w--
O- M- V- PS+ PE Y+ PGP>++ t+ 5- X+ R* tv+ b++ DI+++$ D++ G++ e++>+++ h r% y+
-----END GEEK CODE BLOCK-----

------------------------------------------------------------------------
Enviar e-mail a <majordomo at pm.org> colocando en el cuerpo:
"UNSUBSCRIBE caracas-pm-list" para desuscribirse.
"INFO caracas-pm-list" para conocer las reglas de etiqueta.
------------------------------------------------------------------------



More information about the caracas-pm mailing list