Как загрузить файл используя 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

Mojolicious:: Plugin:: RenderFile

Другие вопросы по тегам