TP6响应输出图片设置响应头

2023-05-11 16:11:11 浏览数 (1)

ThinkPHP6响应输出图片,直接在浏览器显示,非下载文件

代码语言:javascript复制
public function getQrCode()
{
    $app_id = config('miniprogram.app_id');
    $app_secret = config('miniprogram.app_secret');
    $m_wx = Wxmini::getInstance($app_id, $app_secret);
    $scene = 'uid=1';
    $page = 'pages/index/index';

    //获取微信小程序码, 返回的图片 Buffer
    $wx_mini_qrcode = $m_wx->getQrCodeStreamUnlimited($scene, $page);

    //响应给浏览器直接可以展示
    //第一种a:使用助手函数response, 直接在响应头参数中设置
    return response($wx_mini_qrcode, 200, ['Content-Length' => strlen($wx_mini_qrcode), 'Content-Type' => 'image/png']);

    //第一种b:使用助手函数response, Response类中有contentType接口可以调用
    return response($wx_mini_qrcode, 200, ['Content-Length' => strlen($wx_mini_qrcode)])->contentType('image/png');

    //第二种:用header函数指定响应头后echo输出
    /**
     * 注意不能使用 return 去替换 echo,
     * return后框架response类接管, 然后直接使用默认的Content-Type:text/html输出会导致你在浏览器看到一堆乱
     * 看着有种header函数设置是无效的错觉
     */
    ↑↑↑注意↑↑↑注意↑↑↑注意↑↑↑
    header("Content-Type: image/png; charset=utf-8");
    echo $wx_mini_qrcode;
    exit;

}

0 人点赞