Hey folks. I'm new here, and this is my first post.I'm trying to figure out a way to manage multiple file uploads. I have a form that allows users to upload arbitrary numbers of files, which I then need to process and save on the server. I have a javascript that allows this arbitrary number of files: by clicking a link, you create a new form field that adds a numeral to the end of the field name. The %ARGS hash looks like this for a single file:
file => 273141
title => Back to
id => 7
number => 1
creation_date => 2007
A multiple upload %ARGS looks like this:
file => 273141
title => Back to
id => 7
number => 1
creation_date => 2007
file-2 => that'shot8
title-2 => Natural
id-2 => 6
number-2 => 2
creation_date-2 => 1985
file-3 => Introduction
title-3 => Stuff Like This
id-3 => 12
number-3 => 3
creation_date-3 => 1998
I created a loop that allows me to handle the %ARGS data:
my $i = 2;
while ( $i <= $ARGS{'numberfiles'} ) {
my %thash;
foreach my $key ( sort( keys %ARGS ) ) {
if ( $key =~ /creation_date-$i/ ) {
$thash{'creation_date'} = $ARGS{$key};
}
if ( $key =~ /title-$i/ ) {
$thash{'title'} = $ARGS{$key};
}
if ( $key =~ /number-$i/ ) {
$thash{'number'} = $ARGS{$key};
}
if ( $key =~ /rate-$i/ ) {
$thash{'rate'} = $ARGS{$key};
}
if ( $key =~ /type-$i/ ) {
$thash{'type'} = $ARGS{$key};
}
if ( $key =~ /id-$i/ ) {
$thash{'id'} = $ARGS{$key};
}
if ( $key =~ /file-$i/ ) {
$thash{'file'} = $ARGS{$key};
}
}
my $nfile = $api->newBean('file');
}
$nfile->save($api);
$i++;
}
But the problem is handling the actual files simultaneous with this
file information. I have been trying to construct some sort of loop
to go through each $r->upload->tempname object, but it seems like the
only way to do that is to make it an entirely separate loop. Which
gets kludgier and kludgier, because my object-oriented perl requires
that I make a "mini hash" out of every file uploaded--the %thash
above. I know there has to be an elegant way to do this: I just don't
know it.
Is it possible to use the Apache::Request object instead of %ARGS altogether? Could I handle the file data and the files together using $r instead of taking the info from %ARGS here and trying to take the data from $r there?
Has anyone been faced with this problem before? All comments and help, insights and wisdom, would be greatly appreciated.
Amiri
Mail converted by mhonarc 2.6.15
This archive provided courtesy of JSW4.NET, Internet Hosting Services for Small Business.