tp框架header设置图片格式无效问题
tp框架header设置图片格式无效问题
在非TP框架内我们想直接输出一张图片到浏览器时,可以通过header('Content-Type: image/jpeg'),即可实现图片的输出,但是当放到TP内时输出的还是乱码数据。
NO1:实现目的是,调用php接口时通过传入一张图片地址,直接在页面输出图片,正常我们编辑的接口代码如下:
public function showImg(){
header('Content-Type: image/jpeg');
$sdat = request()->param();
echo file_get_contents($sdat['path']);
}
NO2:代码是没问题的,但是输出后显示的还是乱码,即设置的头部类型无效,看了下浏览器访问类型居然还是text/html,百度了下,说是tp的Response类型默认控制输出设置text/html,有的小伙伴是直接在框架内添加了一个图片格式的输出类,好吧,感觉有点麻烦的说,此处不做记录
NO3:找到有位小伙伴实现了一种更加简单的方式,亲测可行,感谢分享,此处记录下:
public function showImg(){
ob_end_clean(); //清空缓冲区并关闭输出缓冲
header('Content-Type: image/jpeg'); //设置输出格式类型为图片
ob_start(); //开启输出缓冲并准备将图片内容保存到缓冲区,而不是浏览器
$sdat = request()->param();
echo file_get_contents($sdat['path']);
$data = ob_get_contents(); //获取到缓冲区的图片内容
ob_end_clean(); //清空缓冲区并关闭输出缓冲
echo $data; //输出到浏览器
}