#!/usr/bin/perl -w
use strict;
use CGI;
my $q = new CGI;
# configure
my $file_dir = "/home/tracks";
# do the action
my $action = $q->param('action');
my $method = {
form => \&form,
upload => \&upload,
};
if ( $method->{$action} ) { $method->{$action}->(); } else { &form; }
# view the form
sub form {
my ($done) = @_;
my $close = $done == 1 ? "onLoad='self.close()'" : "";
print <<FORM;
<html>
<body $close>
<!-- html form begin -->
<form method="POST" action="index.cgi" enctype="multipart/form-data">
<input type="hidden" name="action" value="upload">
<input type="text" name="name" size="28"><br>
<input type="file" name="file" size="28"><br>
<input type="submit">
</form>
<!-- html form end -->
</body>
</html>
FORM
}
# upload the file
sub upload {
my $file = $q->upload('file');
my $name = $q->param('name');
$name =~ s/.*[\/\\](.*)/$1/;
open( OUTFILE, ">$file_dir/$name" ) || die $!;
binmode OUTFILE;
for my $line (<$file>) {
print OUTFILE $line;
}
close OUTFILE;
form(1); # reload the form closing the window
}