package LSRfm::Application::Upload;
use strict;
use warnings;
use base qw(LSRfm::Base);
use Apache::Reload;
use CGI;
use CGI::Upload;
#use CGI::Simple;
sub setup {
my $self = shift;
$self->start_mode('input');
$self->run_modes([qw/input process/]);}
sub input {
my $self = shift;
my $errs = shift;
my $html_template = $self->param('html_template');
my $output;
$html_template->process('upload/form', {wrapper => $self->wrapper(),
errors => $errs}, \$output)
|| die $html_template->error;
return $output;
}
sub process {
my $self = shift;
my $html_template = $self->param('html_template');
my $q = $self->query;
my $script = $q->script_name;
my $filename = $q->param('uploaded_file');
my $upload_file = $q->param('uploaded_file');
my $diff_name = $q->param('diff_name');
my $totalbytes;
my ($bytesread, $buffer);
my $num_bytes = 1024;
my $destination = "/home/lsrfm/webs/www.lsrfm.com/htdocs/uploads/";
#check rm
my ($results, $err_page) = $self->check_rm('input',
{
required => [qw/uploaded_file/],
filters => ['trim'],
msgs => {
missing => 'Please S
+upply a File Name',
}
});
return $err_page if $err_page;
#sall good patch together
if ($diff_name)
{
$filename = $diff_name;
}
my $output_file = $destination . $filename;
#upload time
open (OUTFILE, ">", "$output_file") or die "Couldn't open $output_fi
+le for writing: $!";
while ($bytesread = read($upload_file, $buffer, $num_bytes)) {
$totalbytes += $bytesread;
print OUTFILE $buffer;
}
die "$output_file Read Failure: $!" unless defined($bytesread);
unless (defined($totalbytes)) {
print "<p>Error: Could not read file $filename, ";
print "or was of zero length";
} else {
print "<p>Done ok, $totalbytes</p>";
}
close OUTFILE or die "Couln't Close file $!";
#output
my $output;
$html_template->process('upload/form', {wrapper => $self->wrapper(),
status => "sall_good",
file => $filename,
dest => $destination,
from => $filename,
}, \$output)
|| die $html_template->error;
return $output;
}
1;
Dont forget to set the enctype of your form to enctype of "multipart/form-data"
Barry Carlyon
barry@barrycarlyon.co.uk
|