Perl PSGI不会自动提供静态文件

时间:2014-08-06 09:06:41

标签: perl psgi

我正在练习Perl和PSGI / Plack。只是尝试简单的PSGI示例应用程序:

app.psgi

#!/usr/bin/perl

my $counter = 0;

my $app = sub {
    my $env = shift;
    my $path = $env->{PATH_INFO} || $env->{REQUEST_URI};
    $counter++;
    my $content = "Hellow world.\nCounter=$counter\nPath: $path\n";
    return [ 200, [ 'Content-type', 'text/plain' ], [ $content ] ]
};

然后通过以下方式运行:

plackup app.psgi

如果我将浏览器指向/ news / world之类的任何路径:

http://localhost:5000/new/world

这没关系,我将$ path变量设置为/ news / world,我将处理cgi响应。

如果我指向logo.png

等静态文件的问题
http://localhost:5000/logo.png

我还将$ path变量设置为/logo.png

问题是,为什么plackup服务器不会自动提供静态图像文件logo.png。

我必须手动执行此操作吗?如果是这样,那就意味着每次请求我都要ping文件系统,先检查-f $ path。

这意味着我正在构建一个完整的服务器处理程序而不仅仅是我的脚本处理程我不理解。

2 个答案:

答案 0 :(得分:4)

使用Plack::Middleware::Static模块。它允许您的应用程序从根目录提供静态文件。

答案 1 :(得分:0)

Plack::Middleware::Static适用于静态目录。但您可以改为处理文件处理程序。您可以尝试将GLOB标量和标题application/pdf放入正文中。

相关问题