2016-11-28 5 views
2

У меня есть некоторый truble с Yii2. Я пытаюсь добавить/установить заголовки ответов в действии моего контроллера. Ниже код:Yii2: как изменить/добавить заголовки ответов?

Yii::$app->response->headers->set('Content-type', ['application/pdf']); 
    Yii::$app->response->headers->set('Content-Disposition', ['inline', 'filename=' . $fileName]); 
    Yii::$app->response->headers->set('Content-Transfer-Encoding', ['binary']); 
    Yii::$app->response->headers->set('Content-Length', [$fileSize]); 
    Yii::$app->response->headers->set('Accept-Ranges', ['bytes']); 

    return readfile($filePath); 

Если я могу изменить набор() для добавления(), или второй аргумент из массива в строку так, не получают никакой реакции. Файл Pdf не открывается. Но если я использую собственный метод PHP header(), все работает правильно.

+0

Смотрите функцию setDownloadHeaders в классе Response – ConorHolt

+0

@ConorHolt, Не, не работает Yii :: $ app-> response-> setDownloadHeaders ($ fileName, 'application/pdf', true, $ fileSize); – illatif

ответ

1

Метод set подпись ожидает строку как значение, поэтому было бы лучше заменить ваши массивы на строку, хотя это не имеет никакого значения для нестрого кодирования.

Во всяком случае - на основе getDispositionHeaderValueContent-Disposition должен быть

'inline; filename=' . $fileName 

Было бы лучше использовать Yii 2 способа отправить этот файл в браузере, как:

+0

В любом случае, не работает ( – illatif

+0

Уверен, я могу использовать функцию native header(), но я думаю, что должен работать в Yii2 way – illatif

+0

проверить обновленный ответ – Bizley

1

Yii2 супер простой способ отправки файлов, как загрузить это

public function actionDownload() 
{ 
    return \Yii::$app->response->sendFile('path/to/file.txt'); 
} 

Для получения дополнительной информации см the documentation

Смежные вопросы