Está usted en Indice > Construcción > Lenguajes > Perl > Lecciones y Paso a Paso > Upload de Archivos con Perl
Construcción
Maletín
Utilidades
Cursos
Promoción
Rentabilidad
Zona Novatos
Foros
Acceso a tu cuenta

Upload de Archivos con Perl (2)

El CGI

Ya que tenemos nuestro formulario HTML hecho, ahora vamos a crear nuestro CGI.

Lo primero que tenemos que hacer es recibir todos los datos enviados en nuestra forma. Esto lo vamos a hacer con el módulo CGI, guardando cada uno de los campos enviados en un hash:

my %Input;

my $query = new CGI;
my @pairs = $query-<param;

foreach my $pair(@pairs){
$Input{$pair} = $query-<param($pair);
}

Lo siguiente será incializar unas variables, una con la ruta de el directorio donde queremos que se estacionen los archivos enviados, y un array con las extensiones de archivos que queremos recibir:

#Directorio donde queremos estacionar los archivos
my $dir = "/ruta/al/directorio";

#Array con extensiones de archivos que podemos recibir
my @extensiones = ('gif','jpg','jpeg','bmp','png');

Ahora lo que vamos a hacer es crear un funcion que se llame recepcion_de_archivo la cual se encargara de recibir el archivo y estacionarlo correctamente.

Cuando nos llega el nombre de el archivo, llega con todo y el directorio local, por lo que vamos a crear unas expresiones regulares para sacar solamente el nombre de el archivo, y vamos a poner el resultado final en una nueva variable:

my $nombre_en_servidor = $Input{'archivo'};
$nombre_en_servidor =~ s/ /_/gi;
$nombre_en_servidor =~ s!^.*(\|/)!!;

Antes de empezar a recibir el archivo vamos a checar si estamos recibiendo un archivo con cualquiera de las extensiones que queriamos:

my $extension_correcta = 0;

foreach (@extensiones){
if($nombre_en_servidor =~ /.$_$/i){
$extension_correcta = 1;
last;
}
}

Lo que hicimos fue crear una nueva variable llamada extension_correcta la cual será puesta como 1 en caso de que se encuentre cualquiera de las extensiones en el archivo, de lo contrario quedara con el 0.

Muy bien, ya que hicimos todo esto ahora tenemos que hacer la parte más importante, la recepcion y creación del nuevo archivo:

if($extension_correcta){

#Abrimos el nuevo archivo
open (OUTFILE, ">$dir/$nombre_en_servidor") || die "No se puedo crear el archivo";
binmode(OUTFILE); #Para no tener problemas en Windows

#Transferimos byte por byte el archivo
while (my $bytesread = read($Input{'archivo'}, my $buffer, 1024)) {
print OUTFILE $buffer;
}

Continúa en la página siguiente



Usuarios que han visto este tema también han visto...

- Variables de Entorno
- Usando el hash en Perl
- Algunos trucos para programar en PERL
- Fecha y Hora con Perl
- Creando thumbnails con Perl


Versión imprimible - Versión imprimible de este documento
Enviar e-mail - Enviar por e-mail este documento
Publicidad

Información legal | Política de Privacidad | Contacte con nosotros

Otro proyecto de Factoría de Internet. Copyright© 2003-2008 Factoría de Internet S.L.. Todos los derechos reservados.


Página generada el 08-09-2008 a las 00:34:49