Заголовки не изменяются с объектом Response в Symfony2 - PullRequest
1 голос
/ 01 апреля 2012

Я пытаюсь вернуть PDF в браузер, используя Symfony 2, поэтому, как только я найду файл, я использую:

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

Я заблудился с этой проблемой.Есть мысли?

Ответы [ 2 ]

7 голосов
/ 03 апреля 2012

readfile выполняется первым и начинает отправку файла клиенту. Это запускает заголовки, которые будут сгенерированы. Затем возвращаемое значение файла чтения передается в Response. Когда Response возвращается клиенту, для PHP невозможно изменить заголовки, потому что они были запущены при запуске readfile.

Заменить readfile на file_get_contents.

1 голос
/ 07 марта 2014

Вы также можете использовать следующие

new StreamedResponse(function () use ($file) {
    readfile($file);
}, 200, array('Content-Type' => 'image/png');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...