On Wed, Aug 01, 2007 at 08:58:58AM -0700, Michael Reece wrote:
>
> On Aug 1, 2007, at 8:31 AM, Amiri Barksdale wrote:
>
> >Thanks Michael! I appreciate your response.
> >
> >Can you possibly tell me what you mean with the "next unless"
> >statement? It seems to say go to the next upload object, i.e., the
> >next file, unless this one is numbered? But most of them will be
> >numbered, so it won't go... to the next one?
>
> you are correct, it would typically not skip that field, since you
> expect all fields to be numbered, assuming your javascript is working
> correctly and your users don't try anything malicious.
>
> but since the code below the next relies on it having a successful
> $id to use as a key for the hash, i find it wise to test for such
> assumptions just in case something goes awry.
Here's how I handle multiple file uploads with mason 1.3 on apache2 with
libapreq2:
In my HTML I have a loop for the number of file uploads and then:
<td><input name="attachment_<% $ordernumber %>" type="file" id="file1"
size="25"></td>
Then in my %init something like this:
use Apache2::Upload;
my $req = Apache2::Request->new($r);
my @uploads = $req->upload;
foreach my $uploadname ( @uploads ) {
my $upload = $req->upload($uploadname);
# skip empty ones
next if ( not $upload->name );
next if ( $upload->filename eq "" );
# get the id we're dealing with
$upload->name =~ m/attachment_(\d+)$/;
my $attachment_order = $1;
# massage filename
my ($filenametrimmed) = $upload->filename =~ m!([^/\\]*$)!;
my $filenameshort = "/user_files/$filenametrimmed";
my $savefilename = $base_path . $filenameshort;
# this deals with reading the file from the $upload->fd, saving it to
# the $savefilename path, etc.
my $ret = $m->comp("/components/fileupload.mc", upload => $upload,
savefilename => $savefilename );
# error handling for return value from component
# anything else that's needed after the file has been uploaded, in my
# case boring stuff like putting the file into a database and
# spitting out "blah balh uploaded" to the screen.
}
Hopefully that gives you a bit of an idea... it's a bit ugly I'm sure,
but works for me. I've actually moved to using a hacked version of a
file progress upload freeware I found somewhere due to client
requirements for large uploaded files, but the above was my pure mason
solution.
--
Alan <[EMAIL PROTECTED]> - http://arcterex.net
--------------------------------------------------------------------
"Beware of computer programmers that carry screwdrivers." -- Unknown
-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems? Stop.
Now Search log events and configuration files using AJAX and a browser.
Download your FREE copy of Splunk now >> http://get.splunk.com/
_______________________________________________
Mason-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/mason-users