我开始看PSGI,我知道应用程序的响应应该是一个数组 参考三个元素,[代码,标题,正文]:
#!/usr/bin/perl
my $app = sub {
my $env = shift;
return [
200,
[ 'Content-type', 'text/plain' ],
[ 'Hello world' ],
]
};
问题是如何发送文件例如zip或pdf以便下载到浏览器。
答案 0 :(得分:7)
只需设置正确的标题和正文。
my $app = sub {
my $env = shift;
open my $zip_fh, '<', '/path/to/zip/file' or die $!;
return [
200,
[ 'Content-type', 'application/zip' ], # Correct content-type
$zip_fh, # Body can be a filehandle
]
};
您可能想尝试添加其他标题(特别是“内容处置”)。
答案 1 :(得分:2)
看看perl dancer;它有psgi支持,是一个非常轻量级的框架。
示例:强>
#!/usr/bin/env perl
use Dancer;
get '/' => sub {
return send_file('/home/someone/foo.zip', system_path => 1);
};
dance;
以运行
chmod 0755 ./path/to/file.pl; ./path/to/file.pl
致电:
wget <host>:<port>/