我正在练习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。
这意味着我正在构建一个完整的服务器处理程序而不仅仅是我的脚本处理程我不理解。
答案 0 :(得分:4)
使用Plack::Middleware::Static模块。它允许您的应用程序从根目录提供静态文件。
答案 1 :(得分:0)
Plack::Middleware::Static
适用于静态目录。但您可以改为处理文件处理程序。您可以尝试将GLOB标量和标题application/pdf
放入正文中。