2016-10-16 23:56:43 9991次浏览 6条回答 0 悬赏 10 金钱

但是它永远是 text/html; charset=UTF-8

最佳答案

  • curder 发布于 2016-10-17 08:24 举报
    1. 建议楼主查看 请求处理 -> 响应 相关内容 链接
    2. yii\web\Response::sendFile(): 发送一个已存在的文件到客户端。
    3 条回复
    回复于 2016-10-17 10:26 回复

    我不是打开图片,就是简单的用php函数画图,但是header( "Content-type: image/jpeg");这句没效果,输出的还是html。

    回复于 2016-10-17 12:18 回复

    看上面的链接中有HTTP 头部相关的做法。

    回复于 2016-10-17 13:58 回复

    感觉Yii2在这方面做了优化的,改不了Content-Type,普通访问总是输出html。但是如果是在img 的src访问的话,会自动以图片的形式输出。

  • 回答于 2016-10-17 00:53 举报

    输出图片,可以这样:

    $photo='图片路径.jpg';
    $size = getimagesize($photo); //获取mime信息
    $fp=fopen($photo, "rb"); //二进制方式打开文件
    header("Content-type: {$size['mime']}");
    fpassthru($fp); // 输出至浏览器
    exit;
    

    当然路径存在之类的判断你自己要做好,如果确定图片格式是jpeg,那么可以写死mime

    header( "Content-type: image/jpeg");
    $photo='图片路径.jpg';
    $fp=fopen($photo, "rb"); //二进制方式打开文件
    fpassthru($fp); // 输出至浏览器
    exit;
    
    1 条回复
    回复于 2016-10-17 10:26 回复

    我不是打开图片,就是简单的用php函数画图,但是header( "Content-type: image/jpeg");这句没效果,输出的还是html。

  • 回答于 2016-10-17 14:44 举报

    应该是可以的吧

  • 回答于 2016-10-18 14:28 举报

    如果最后是通过yii框架默认的return渲染视图输出的,就是html头,因为header会覆盖。你尝试不用return,用echo

    1 条回复
    回复于 2016-10-19 12:41 回复

    好的,我试试。

  • 回答于 2017-02-17 16:59 举报

    浏览器在跨域的时候会先发出一个preflight,如果改了header。然后服务器不允许改content-type

    1 条回复
    回复于 2017-02-17 17:00 回复

    需要在服务器端允许修改

    觉得很赞
  • 回答于 2017-11-08 11:40 举报

    //统一response返回json格式
    Yii::$app->response->format = \yii\web\Response::FORMAT_JSON;
    我是想统一返回json的,百度到你的问题,我这边解决了,顺便给你一些建议

您需要登录后才可以回答。登录 | 立即注册
STFPHP
总监

STFPHP

注册时间:2016-10-31
最后登录:2017-07-14
在线时长:14小时55分
  • 粉丝6
  • 金钱3535
  • 威望0
  • 积分3675

热门问题