Beefy Boxes and Bandwidth Generously Provided by pair Networks
Don't ask to ask, just ask
 
PerlMonks  

Re: Handling multiple file upload with Mojo

by trippledubs (Deacon)
on Nov 06, 2014 at 02:26 UTC ( [id://1106301]=note: print w/replies, xml ) Need Help??


in reply to Handling multiple file upload with Mojo

Just to make this code complete with working example. Did not know this, but Mojolicious has no dependencies, and also CGI is out of Perl core.
#!/usr/bin/env perl use strict; use warnings; use Mojolicious::Lite; my $uploadFileDirectory = 'UPLOADS'; mkdir $uploadFileDirectory if ( !-d $uploadFileDirectory ); $ENV{"MOJO_MAX_MESSAGE_SIZE"} = 25 * 2**20; #25 MB get '/upload' => sub { my $c = shift; $c->render('simpleUploadForm'); }; post '/handleUpload' => sub { my $c = shift; my @fileNames; my $files = $c->req->every_upload('files'); for my $file ( @{$files} ) { my $fileName = $file->filename =~ s/[^\w\d\.]+/_/gr; $file->move_to("$uploadFileDirectory/$fileName"); $c->app->log->debug("$fileName uploaded\n"); push @fileNames, $fileName; } $c->render( 'successUpload', files => \@fileNames ); }; app->start; __DATA__ @@ simpleUploadForm.html.ep <!DOCTYPE html> <html> <form action='/handleUpload' method='post' enctype='multipart/form- +data'> Select Files: <input type='file' name='files' multiple=1><br/> <input type="submit" > </html> @@ successUpload.html.ep <!DOCTYPE html> <html> <img src='success.jpg' /> <% for my $j (@{$files}) { %> <p> <%= $j %> </p> <% } %> </html> @@ exception.development.html.ep <!DOCTYPE html> <html> Fail </html>
Update: Must use method "every_upload" introduced in Mojolicious 5.48 or you will only get one file.

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://1106301]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others perusing the Monastery: (6)
As of 2024-04-19 10:17 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found