【发布时间】:2014-05-19 15:26:51
【问题描述】:
我试图让用户在 Slim php 框架中下载一个文件。
预期用途是该文件将是:
http://api.test.com/item/123.json
http://api.test.com/item/123.pdf
我有生成 PDF 的代码,但我需要让 Slim 发送正确的标题,以便下载文件。
这是我为现有系统拥有(工作)的以下代码:
header("Pragma: public");
header('Content-disposition: attachment; filename='.$f->name);
header('Content-type: ' .$f->type);
header('Content-Transfer-Encoding: binary');
echo $f->data;
以下是我当前(非工作)的 Slim 代码,其中我声明的标头未发送到浏览器。相反,我得到了文本/html。 (请注意,此示例仅包含一个标头,我还测试了是否有任何其他标头操作会导致任何影响,但它没有)。 json/pdf/xml 的 switch-case 将在稍后添加。
R::setup();
$app = new \Slim\Slim();
$app->get('/item', function() use ($app) {
$f = R::load('file', 123);
$app->response->headers->set("Content-Type", "application/pdf"); //$f->type
$app->response->setBody($f->data);
});
$app->run();
$app->response->setBody($f->data) 但是工作正常。
【问题讨论】:
-
我无法在 Slim 2.4.0 或 2.4.3 中重现您的问题。如果您能够使用最新版本的 Slim 而您还没有,我强烈建议您升级。