我正在尝试使用Symfony 2将PDF返回到浏览器,所以一旦找到该文件,我就会使用:
return new Response(readfile($file_path), 200, array(
'Content-Type' => 'application/pdf'
));
但如果我加载页面,则不会修改标题,并且内容不会被解释为pdf ...
< HTTP/1.1 200 OK
< Date: Sat, 31 Mar 2012 20:39:20 GMT
< Server: Apache
< X-Powered-By: PHP/5.3.6
< Set-Cookie: PHPSESSID=XXXX; path=/
< Transfer-Encoding: chunked
< Content-Type: text/html
我迷失了这个问题。有什么想法吗?
答案 0 :(得分:7)
readfile
,然后开始将文件发送到客户端。这会触发生成标头。然后readfile的返回值传递给Response
。当Response返回给客户端时,PHP无法更改标头,因为它们是在readfile运行时触发的。
将readfile
替换为file_get_contents
。
答案 1 :(得分:1)
您可能还想使用以下
new StreamedResponse(function () use ($file) {
readfile($file);
}, 200, array('Content-Type' => 'image/png');