Perl如何将zip文件发送到浏览器以便在PSGI中下载

dal*_*sam 3 perl psgi

我开始看PSGI,我知道应用程序的响应应该是三个元素的数组引用,[code,headers,body]:

#!/usr/bin/perl

my $app = sub {
  my $env = shift;

  return [
    200,
    [ 'Content-type', 'text/plain' ],
    [ 'Hello world' ],
  ]
};
Run Code Online (Sandbox Code Playgroud)

问题是如何发送文件例如zip或pdf以便下载到浏览器.

Dav*_*oss 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
  ]
};
Run Code Online (Sandbox Code Playgroud)

您可能想尝试添加其他标头(特别是"内容处置").