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

这篇博客介绍了在ThinkPHP6框架中如何正确配置响应头,以实现直接在浏览器中显示图片,而不是触发文件下载。通过Wxmini类获取微信小程序码并转换为图片Buffer,然后利用response助手函数或header函数设置Content-Type为image/png,确保图片正确显示。文中特别强调了不能使用return替代echo,否则会因框架默认的Content-Type导致输出错误。
摘要由CSDN通过智能技术生成

时间:2022-03-04

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

解决方法:

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;

}

TP框架默认响应的是text/html
在这里插入图片描述
Response类中contentType接口
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值