У меня вопрос, как я могу сделать что-то вроде этого:
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');