1、发送文件
和浏览器跳转类似,文件发送是另一个依赖指定 HTTP 头的功能, Yii 提供方法集合来支持各种文件发送需求,它们对 HTTP 头都有内置的支持。
- yiiwebResponse::sendFile():发送一个已存在的文件到客户端
- yiiwebResponse::sendContentAsFile():发送一个文本字符串作为文件到客户端
- yiiwebResponse::sendStreamAsFile():发送一个已存在的文件流作为文件到客户端
这些方法都将响应对象作为返回值,如果要发送的文件非常大,应考虑使用 yiiwebResponse::sendStreamAsFile() 因为它更节约内存, 以下示例显示在控制器操作中如何发送文件:
public function actionDownload()
{
return Yii::$app->response->sendFile('path/to/file.txt');
}
如果不是在操作方法中调用文件发送方法,在后面还应调用 yiiwebResponse::send() 没有其他内容追加到响应中。
Yii::$app->response->sendFile('path/to/file.txt')->send();