2014-12-29 21:43:53 3316次浏览 1条回答 0 悬赏 5 金钱
Yii::$app->response->headers->set(
    'Content-Type',
    \yii\helpers\FileHelper::getMimeType($filePath)
);
		
return file_get_contents($filePath);

如上,图片二进制是输出了,http头改不了啊,还是text/html。为什么?
用header函数也不行。

  • 回答于 2014-12-30 11:14 举报

    Response 是有 format 设置的,默认是 const FORMAT_HTML = 'html', Yii2 里面,action 方法可以返回任何类型,但最终会被处理为 Response 类型,在处理输出的过程中,会根据 format 来设置 Content-Type 类型,比如你返回数组,如果此时设置了 formatjson,则返回 json 类型,如果 format 设置为 xml,则返回 xml 类型

    上面的问题,估计是你没有设置 format 属性,并且 action 返回了字符串,所以被当成了 text/html 处理了,可以把 format 设置为 const FORMAT_RAW = 'raw',看下ok不。

    其实 Response 已经有方法能处理文件类型的,public function sendFile($filePath, $attachmentName = null, $options = []), 这个可以自己研究下,我没有测试,只是在源代码中看到的

您需要登录后才可以回答。登录 | 立即注册
dyllen
经理

dyllen

注册时间:2014-09-09
最后登录:2020-10-16
在线时长:48小时47分
  • 粉丝8
  • 金钱400
  • 威望80
  • 积分1680

热门问题