I too have tried to successfully implement robust file uploading with mod_perl. I failed.
This is why it's still handy to have a cgi-bin directory, which i what i use to solve this
problem - a CGI script. Something like the following should get you started. I store the
files in another directory outside of the cgi-bin dir, say UPLOAD (caps for emphasis only).
use strict;
use warnings;
use CGI qw(:standard);
use CGI::Carp qw(fatalsToBrowser);
use File::Basename;
my $PATH = '/path/to/upload/not/in/cgi-bin/UPLOAD';
print header, start_html('not very safe uploader');
if (param('go')) {
my $handle = upload('the_file');
my $name = param('the_file');
open OUT, '>', "$PATH/$name" or die "can't open target $name: $!";
print OUT while <$handle>;
}
my @file = map basename($_), <$PATH/*>;
print start_multipart_form(),
p('upload:', filefield('the_file',undef,50,80)),
p(submit('go')),
end_form,
hr,
ul(li[ map a({href=>"/UPLOAD/$_"},$_), @file ]), # YMMV here
hr,
end_html,
;
However, i do hope that someone can ellaborate more on why mod_perl has difficulty with
file uploads.
|