3

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

应用程序.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

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

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

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

4

2 回答 2

5

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

于 2014-08-06T09:31:58.087 回答
0

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

于 2014-09-30T20:31:32.347 回答