Presentación
Ernesto Hernandez-Novich
emhn at telcel.net.ve
Mon Jun 26 10:50:26 CDT 2000
On Mon, 26 Jun 2000, Felipe Gouveia - Correio de Caracas wrote:
>#!/usr/bin/perl
>#file: upload.pl
>
>use CGI qw/:standard/;
>
>print header,
> start_html('file upload'),
> h1('file upload');
>print_form() unless param;
>print_results() if param;
>print end_html;
>
>sub print_form {
> print start_multipart_form(),
> filefield(-name=>'upload',-size=>60),br,
> submit(-label=>'Upload File'),
> end_form;
>}
>
>sub print_results {
> my $length;
> my $file = param('upload');
> if (!$file) {
> print "No file uploaded.";
> return;
> }
> print h2('File name'),$file;
> print h2('File MIME type'),
> uploadInfo($file)->{'Content-Type'};
> while (<$file>) {
> $length += length($_);
> }
> print h2('File length'),$length;
>}
El programa que adjuntaste solamente permite al usuario indicar el nombre del
archivo y en la rutina print_results _solamente_ se indica la longitud del
archivo; si quieres _salvarlo_ en el servidor, debes abrir un archivo en algún
directorio de acceso público o semipúblico y copiar las líneas del archivo.
En otras palabras, reemplaza el while por
open(COPIAR,">/tmp/subida");
while (<$file>) { # Leo de línea en línea
print COPIAR $_;
}
close(COPIAR);
close($file);
Si el archivo que se sube es binario (GIF, JPEG, basura Word/Excel/Powerpoint),
se complica un poco más porque el concepto de "línea" no existe, de manera que
debes usar algo como
open(COPIAR,">/tmp/subida");
while ($bytes = read($filename,$buffer,1024)) { # Leo en buffers de 1k
print COPIAR $buffer;
}
close(COPIAR);
close($file);
--
Ernesto Hernández-Novich - Running Linux 2.2.14 - Unix: Live free or die!
One thing is to be the best, and another is to be the most popular.
-----BEGIN GEEK CODE BLOCK-----
Version: 3.1
GCS 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-----
Para suspender la suscripción a esta lista, favor enviar un e-mail a
<majordomo at pm.org> colocando "UNSUBSCRIBE caracas-pm-list"
en el cuerpo.
More information about the caracas-pm
mailing list