SLIM API - 提供文件下载

SLIM API - Offer Files to Download

我正在为我的项目使用 Slim API。我想提供文件下载(主要是 PDF 文件)。我发现了几种发送 public link 到文件的方法,这是我不想要的。我还找到了 Slim 2.4 版本的中间件,但我使用的是 3.x。

我只想访问路线,例如/downloads/version/2183 并且应该开始使用这个特定文件 ID 的下载。我在可用变量中有服务器上文件的路径。

背后的基本思想是不同的限制,哪些用户可以下载文件 - 但我自己可以做到 - 我遇到的问题是,如何通过路由将下载带到客户端浏览器

有人知道如何实现吗?

干杯, 尼克拉斯

这个其实很简单

  1. 为响应中的文件设置正确的 Headers Object
  2. 将文件内容读入Response的bodyObject

$app->get('/my/file', function ($req, $res, $args) {
   return $res->withHeader('Content-Type', 'application/octet-stream')
               ->withHeader('Content-Disposition', 'attachment')
               ->write(file_get_contents("file.txt"));
});