Zend Framework, как настроить заголовки

У меня вопрос, как я могу сделать что-то вроде этого:

header("Content-Disposition: inline; filename=result.pdf"); header("Content-type: application/x-pdf"); 

С Zend Framework я попытался:

  $this->getResponse() ->setHeader('Content-Disposition:inline', ' filename=result.pdf') ->setHeader('Content-type', 'application/x-pdf'); 

Но работает неправильно.

С наилучшими пожеланиями,

Ваше заявление о настройке заголовков ответов слегка искажено:

 $this->getResponse() ->setHeader('Content-Disposition', 'inline; filename=result.pdf') ->setHeader('Content-type', 'application/x-pdf'); 

Вышеизложенное должно работать – обратите внимание на разницу в Content-Disposition голова.

Кстати … Когда вы хотите форсировать окно загрузки (вместо загрузки документа в браузере), вы должны использовать attachment Content-Disposition .

 $this->getResponse() ->setHeader('Content-Disposition', 'attachment; filename=result.pdf') ->setHeader('Content-type', 'application/x-pdf'); 

В зависимости от браузера, возможно, вам также необходимо установить Content-Length или изменить Content-type на комбинацию (несколько заголовков) одного или нескольких application/force-download , application/octet-stream и / или application/download . И, как я писал в комментарии, иногда кеширование заголовков может помешать вашей загрузке. Проверьте, какие кеширующие заголовки отправлены.

В конце таблицы я могу рекомендовать этот помощник действий как простой, многоразовый компонент для отправки файлов или данных памяти в браузер.

Имеет варианты кэширования, расположения и может использовать Apache Sendfile

Я предполагаю, что вы делаете что-то вроде:

 $this->getResponse() ->setHeader('Content-Disposition:inline', ' filename=result.pdf') ->setHeader('Content-type', 'application/x-pdf'); fpassthru($filename); exit(); 

или что-то.

Ответ здесь никогда не будет отображаться (который отображает заголовки). Ответ обычно выполняется во время печати после операции.

Вам нужно будет напрямую установить заголовки (как вы отметили в коде без кода), или напрямую использовать $this->getResponse()->sendHeaders() .

У меня был набор заголовков. Он не был установлен, но ДОБАВЛЕН. Таким образом, у меня был Content-Type текста / html, а также application / pdf.

Пометка Content-Type с помощью TRUE сделала возможной загрузку в IOS и других устройствах, которые отображали только критические символы после загрузки или ошибки:

->setHeader('Content-type', 'application/x-pdf', true);

setHeader($name, $value, $replace = false)

от: https://framework.zend.com/manual/1.12/de/zend.controller.response.html

решаемая

  $this->getResponse() ->setHeader('Content-Disposition:inline', ';filename=result.pdf') ->setHeader('Content-Type', 'application/x-pdf');