#!/usr/bin/perl
use strict; # Ormai oggi è quasi obbligatorio.
use CGI; # semplifica la lettura dell'input
my $dir = "/var/www/html"; # directory che contiene i file da scaricare
my $q = new CGI;
my $file = $q->param('file'); # raccoglie il nome file
my $size = (-s "$dir/$file"); # ne calcola la dimensione
my $buf;
# segue l'header http necessario per impedire l'apertura
# del file
print "Content-type: octet/stream\n";
print "Content-length: $size\n";
print "Content-disposition: attachment; filename=$dir/$file\n\n";
open (FILE, "<$dir/$file");
# il file viene letto e poi scritto sullo STOUT
# differenziando i file binari da quelli ASCII
if (-B "$dir/$file") {
binmode FILE;
while (read FILE, $buf, 1024) {
print $buf;
}
} else {
while (<FILE> ) {
print;
}
}
close FILE;
exit;