Как загрузить файл используя Mojolicious?
Я пробовал Mojolicious веб-фреймворк на основе Perl. И я постараюсь разработать полноценное приложение вместо Lite. Проблема, с которой я сталкиваюсь, заключается в том, что я пытаюсь загрузить файлы на сервер, но приведенный ниже код не работает.
Пожалуйста, объясните мне, что с ним не так. Кроме того, если файл загружен, он находится в общей папке приложения или в другом месте.
Заранее спасибо.
sub posted {
my $self = shift;
my $logger = $self->app->log;
my $filetype = $self->req->param('filetype');
my $fileuploaded = $self->req->upload('upload');
$logger->debug("filetype: $filetype");
$logger->debug("upload: $fileuploaded");
return $self->render(message => 'File is not available.')
unless ($fileuploaded);
return $self->render(message => 'File is too big.', status => 200)
if $self->req->is_limit_exceeded;
# Render template "example/posted.html.ep" with message
$self->render(message => 'Stuff Uploaded in this website.');
}
2 ответа
(Во-первых, вам нужна HTML-форма с method="post"
а также enctype="multipart/form-data"
и input type="file"
с name="upload"
, Просто чтобы убедиться.)
Если бы не было ошибок, $fileuploaded
будет Mojo::Upload
, Затем вы можете проверить его размер, его заголовки, вы можете хлебать его или перемещать, с $fileuploaded->move_to('path/file.ext')
,
Взято из странного примера.
Для обработки загрузки файлов вы должны использовать $c->req->uploads
post '/' => sub {
my $c = shift;
my @files;
for my $file (@{$c->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);
}
$c->render(text => "@files");
} => 'save';
Смотрите полный код здесь: /questions/18325767/kak-zagruzit-neskolko-fajlov-s-pomoschyu-mojolicious/18325778#18325778
Вы можете использовать Mojolicious:: Plugin:: RenderFile