Beefy Boxes and Bandwidth Generously Provided by pair Networks
Syntactic Confectionery Delight

Re: Handling multiple file upload with Mojo

by trippledubs (Deacon)
on Nov 06, 2014 at 02:26 UTC ( #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?

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

How do I use this? | Other CB clients
Other Users?
Others avoiding work at the Monastery: (3)
As of 2021-10-27 16:08 GMT
Find Nodes?
    Voting Booth?
    My first memorable Perl project was:

    Results (94 votes). Check out past polls.