输出图片到浏览器显示,http头不能修改的问题? [ 2.0 版本 ]
Yii::$app->response->headers->set(
'Content-Type',
\yii\helpers\FileHelper::getMimeType($filePath)
);
return file_get_contents($filePath);
如上,图片二进制是输出了,http头改不了啊,还是text/html
。为什么?
用header函数也不行。
共 1 个回答
-
Response
是有format
设置的,默认是const FORMAT_HTML = 'html'
,Yii2
里面,action
方法可以返回任何类型,但最终会被处理为Response
类型,在处理输出的过程中,会根据format
来设置Content-Type
类型,比如你返回数组,如果此时设置了format
为json
,则返回json
类型,如果format
设置为xml
,则返回xml
类型上面的问题,估计是你没有设置
format
属性,并且action
返回了字符串,所以被当成了text/html
处理了,可以把format
设置为const FORMAT_RAW = 'raw'
,看下ok不。其实
Response
已经有方法能处理文件类型的,public function sendFile($filePath, $attachmentName = null, $options = [])
, 这个可以自己研究下,我没有测试,只是在源代码中看到的
dyllen
注册时间:2014-09-09
最后登录:2020-10-16
在线时长:48小时47分
最后登录:2020-10-16
在线时长:48小时47分
- 粉丝8
- 金钱400
- 威望80
- 积分1680