2

我正在尝试使用 Mojolicious::Lite 制作文件上传/下载器,虽然上传部分没有问题,但下载部分却造成了麻烦。此代码将让我下载小文本文件,但其他任何内容都会变成 0 字节文件。关于如何正确执行此操作的任何建议?

get '/download/:file' => sub {
    my $self = shift;
    my $file = $self->param('file');
    $self->res->headers->content_type("application/x-download");
    $self->res->content->asset(Mojo::Asset::File->new(path => "./testdir/$file"));
    $self->rendered;
};
4

2 回答 2

7

您可以安装插件Mojolicious::Plugin::RenderFile来简化此操作。

plugin 'RenderFile';

get '/download/:file' => sub {
  my $self = shift;
  my $file = $self->param('file');
  $self->render_file('filepath' => "./testdir/$file");
};
于 2013-03-07T22:10:35.487 回答
4

Joel Berger 发布了这个小程序来启动一个 web 服务器来提供本地文件,它工作得很好:

use Mojolicious::Lite;

@ARGV = qw(daemon);

use Cwd;
app->static->paths->[0] = getcwd;

any '/' => sub {
    shift->render_static('index.html');
    };

app->start;
于 2014-01-08T11:17:17.933 回答