簡體   English   中英

Yii2:如何更改/添加響應頭?

[英]Yii2: how to change/add response headers?

我對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);

如果我將set()更改為add(),或者將第二個參數從數組更改為字符串,則不會產生任何反應。 pdf文件未打開。 但是,如果我使用本機PHP header()方法-所有方法都正確。

Yii2超級簡單的下載文件發送方式是

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

有關更多信息,請參閱文檔

方法set簽名期望將字符串作為值,因此最好用字符串替換數組,盡管這在非嚴格編碼中沒有任何區別。

無論如何-基於getDispositionHeaderValue Content-Disposition應該是

'inline; filename=' . $fileName

最好使用Yii 2方法將文件發送到瀏覽器,例如:

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM