13

我一直在尝试基于 perl 的 Mojolicious Web 框架。我已经尝试开发一个完整的应用程序而不是 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.');
}
4

3 回答 3

9

method="post"(首先,您需要一些带有andenctype="multipart/form-data"和 a input type="file"with的HTML 表单name="upload"。只是为了确定。)

如果没有错误,$fileuploaded将是一个Mojo::Upload. 然后你可以检查它的大小,它的标题,你可以用$fileuploaded->move_to('path/file.ext').

取自一个奇怪的例子

于 2012-04-14T17:09:04.887 回答
2

要处理上传文件,您应该使用$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';

在此处查看完整代码:https ://stackoverflow.com/a/28605563/4632019

于 2019-03-15T11:34:43.290 回答
-1

您可以使用 Mojolicious::Plugin::RenderFile

Mojolicious::插件::RenderFile

于 2013-04-25T14:46:13.943 回答