如何使用Mojolicious上传文件?(How Upload file using Mojolic

2019-07-28 23:59发布

我一直在尝试基于Perl的Mojolicious web框架。 我有尝试开发一个完整的应用程序,而不是精简版。 我现在面临的问题是,我试图将文件上传到服务器,但下面的代码无法正常工作。

请指导我什么是错的。 此外,如果文件被上传则是它的应用程序或其他一些地方的公共文件夹中。

提前致谢。

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.');
}

Answer 1:

(首先,你需要一些HTML形式method="post"enctype="multipart/form-data" ,并且input type="file"name="upload" ,只是可以肯定的。)

如果没有错误, $fileuploaded将是一个Mojo::Upload 。 然后,你可以检查它的大小,它的头,你可以啜食,或移动它, $fileuploaded->move_to('path/file.ext')

从拍摄奇怪的例子 。



Answer 2:

您可以使用Mojolicious ::插件:: RenderFile模块

Mojolicious ::插件:: RenderFile模块



Answer 3:

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



文章来源: How Upload file using Mojolicious?