2015-02-19 4 views
3

Я новичок в Mojolicious, пытаясь изучить его. Я пытаюсь загрузить несколько файлов с помощью формы, но загружается только один файл за раз. Любое предложение?Как загрузить несколько файлов с помощью Mojolicious?

#!perl -w 

use Mojolicious::Lite; 
use Mojo::Upload; 
use v5.14; 

get '/' => 'page'; 
post '/' => sub { 
    my $self = shift; 
    my @files; 
    for my $file ($self->req->upload('files')) { 
    my $size = $file->size; 
    my $name = $file->filename; 

    push @files, "$name ($size)"; 
    $file->move_to("C:\\Program Files\\Apache Software Foundation\\Apache24\\htdocs\\ProcessingFolder\\".$name); 
    } 
    $self->render(text => "@files"); 
} => 'save'; 

app->start; 

__DATA__ 

@@ page.html.ep 
<!DOCTYPE html> 
<html> 
    <body> 
    <form action="<%=/ProcessingFolder/%>" method="POST" 
enctype="multipart/form-data"> 
    <input name="files" type="file" enctype="multipart/form-data" multiple="multiple"> 
    <button type="submit">Upload</button> 
    </form> 
    </body> 
</html> 

ответ

1

Найдено ответов. Используется uploads() вместо upload(), который возвращает ссылку на массив.

#!perl -w 

use Mojolicious::Lite; 
use Mojo::Upload; 
use v5.14; 

get '/' => 'page'; 
post '/' => sub { 
    my $self = shift; 
    my @files; 
    for my $file (@{$self->req->uploads('files')}) { 
    my $size = $file->size; 
    my $name = $file->filename; 

    push @files, "$name ($size)"; 
    $file->move_to("C:\\Program Files\\Apache Software Foundation\\Apache24\\htdocs\\ProcessingFolder\\".$name); 
    } 
    $self->render(text => "@files"); 
} => 'save'; 

app->start; 

__DATA__ 

@@ page.html.ep 
<!DOCTYPE html> 
<html> 
    <body> 
    <form action="<%=/ProcessingFolder/%>" method="POST" 
enctype="multipart/form-data"> 
    <input name="files" type="file" enctype="multipart/form-data" multiple="multiple"> 
    <button type="submit">Upload</button> 
    </form> 
    </body> 
</html> 
Смежные вопросы