在 Symfony 2.0 中显示 mysql blob pdf 文件

问题描述 投票:0回答:2

我有一个链接:

{% for item in list %}
    ...
    <a href="{{ path('show', { 'id': item.id }) }}"> read pdf file</a>
{% endfor %}

当用户单击链接时,我想显示 pdf 文件(在 mysql 中以 blob 形式存储的文件)。下面的代码不正确,但我希望我的操作执行如下操作。

/**
* @Route("/show", name="show")
*/
public function showAction()
{
    $id = $this->get('request')->query->get('id');
    $item = $this->getDoctrine()->getRepository('MyDocsBundle:Files')->file($id);
    $pdfFile = $item->getFile(); //returns pdf file stored as mysql blob
    $response = new Response();
    $response->setStatusCode(200);
    $response->headers->set('Content-Type', 'application/pdf');
    $response->setContent($pdfFile);
    $response->send() //not sure if this is needed
    return $response;
}
php symfony pdf-generation symfony2
2个回答
2
投票

我不确定 Doctrine 本身是否有 blob 类型,因此我假设您已将其设置为将文件作为实际的 BLOB 正确存储在数据库中。

尝试更多类似的事情......

/**
* @Route("/show/{id}", name="show")
*/
public function showAction($id)
{
    $item = $this->getDoctrine()->getRepository('MyDocsBundle:Files')->find($id);
    if (!$item) {
        throw $this->createNotFoundException("File with ID $id does not exist!");
    }

    $pdfFile = $item->getFile(); //returns pdf file stored as mysql blob
    $response = new Response($pdfFile, 200, array('Content-Type' => 'application/pdf'));
    return $response;
}

1
投票

我面临着同样的问题,为此我更改了实体类中字段的类型。这是“blob”,我把它变成了“text”

/**
 * @var string
 *
 * @ORM\Column(name="content", type="text", nullable=false)
 */
private $content;
© www.soinside.com 2019 - 2024. All rights reserved.