我一直在尝试基于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.');
}
答案 0 :(得分:8)
(首先,您需要一些包含method="post"
和enctype="multipart/form-data"
的HTML表单,以及一个带有input type="file"
的{{1}}。确定无误。)
如果没有错误,name="upload"
将是$fileuploaded
。然后你可以用Mojo::Upload
检查它的大小,它的标题,你可以啜饮它或移动它。
答案 1 :(得分:0)
您可以使用Mojolicious :: Plugin :: RenderFile
答案 2 :(得分:0)
要处理上传文件,您应该使用$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';