使用X-Send文件显示图像(Symfony2)

时间:2014-10-08 10:41:02

标签: image symfony x-sendfile

我在“app / var / assets”中有一些图像(我必须将这些图像放在该目录中,我不能通过客户端限制来更改它。)

我需要展示这些图片。 App目录不是Apache的可访问路径,因此我需要使用X-Send文件。

我如何使用X-Send文件?

我在控制器中试过了:

$path = $this->get('kernel')->getRootDir() . '/var/assets/example.jpg';

$response = new BinaryFileResponse($path');

$response->trustXSendfileTypeHeader();
$response->headers->set('Content-type', 'image/jpg');
$response->sendHeaders();
$response->setContentDisposition(ResponseHeaderBag::DISPOSITION_INLINE, "name"); 

然后在我看来:

<img src="<?= $response ?>" />

但是找不到图像,我得到的图像是:

  

HTTP / 1.0 200 OKCache-Control:publicContent-Disposition:inline;   文件名=

有什么想法吗?

2 个答案:

答案 0 :(得分:0)

我遇到了类似的问题,我创建了一个返回图像的动作。

public function getImgAction(){
    $f = fopen('/var/assets/example.jpg', "rb");
    $str = stream_get_contents($f);
    fclose($f);
    $response = new Response($str, 200);
    $response->headers->set('Content-Type', 'image/jpg');
    return $response;
}

答案 1 :(得分:0)

确保已为apache安装并启用mod_xsendfile

第3行中有一个拼写错误,将变量传递给类构造函数时字符串分隔符(应该是$response = new BinaryFileResponse($path);,但我假设你已经知道了)。