php - 从 Slim Framework 2.4 下载文件

标签 php json pdf slim

我试图让用户在 Slim php 框架中下载一个文件。

文件的预期用途是:

http://api.test.com/item/123.json <- 返回带有数据的 json 字符串

http://api.test.com/item/123.pdf <- 下载具有人类可读数据表示的 pdf 文件

我有生成 PDF 的代码,但我需要让 Slim 发送正确的 header ,以便下载文件。

这是我为现有系统(工作)编写的以下代码:

header("Pragma: public");
header('Content-disposition: attachment; filename='.$f->name);
header('Content-type: ' .$f->type);
header('Content-Transfer-Encoding: binary');
echo $f->data;

以下是我当前的(非工作)Slim 代码,其中我声明的 header 未发送到浏览器。相反,我得到文本/html。 (请注意,此示例仅包含一个 header ,我还测试过任何其他 header 操作是否会产生任何影响,但没有)。稍后将添加 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) 工作正常。

最佳答案

问题解决了。原来是一个包含空格的 php 类。我猜这搞砸了标题。

通过创建一个新的空项目并逐步包含直到出现错误类来解决。

在 Slim 函数中设置 header 的工作解决方案;

<?php

require 'vendor/autoload.php';
$app = new \Slim\Slim();

$app->get('/foo', function () use ($app) {
    $app->response->headers->set('Content-Type', "application/pdf");
    $app->response->setBody("foo");
});

$app->run();
?>

更新:这是我用来让用户下载 PDF 的 header :

$app->response->headers->set('Content-Type', $f->type);
$app->response->headers->set('Pragma', "public");
$app->response->headers->set('Content-disposition:', 'attachment; filename=' . $f->name);
$app->response->headers->set('Content-Transfer-Encoding', 'binary');
$app->response->headers->set('Content-Length', $f->size);
$app->response->setBody($f->data);

关于php - 从 Slim Framework 2.4 下载文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22911530/

相关文章:

java - PDFBox - 删除不可见文本(通过剪辑/填充路径问题)

php - 如果 body class 是 home,使用 php 显示不同的标题 Logo 图像?

php - 将时间存储到数据库并与当前时间进行比较

php - 如何将 case switch mySQL 查询的结果回显到 span 标记内的表中

php - MySQL SELECT 语句 : Multiple items and Owner's Information

javascript - 超链接在新文档窗口中返回 JSON。我希望它返回到像 "response"这样的变量

python - 无法以完全相同的格式存储或打印json数据

Haskell 的 JSON 输出

c# - 填充多个 PDF

xml - PDF导出在Grails 2.3.2中不起作用