Thinkphp 下载png图片功能
在Thinkphp中使用框架自带的下载类下载PNG、JPG等图片,发现图片时下载下来了,但是下载下来的图片不能够正常浏览,显示格式不正确,图片编辑器不能打开,但是使用nodepad++编辑器修改成ANSI编码保存以后,就正常了,这个问题找了两天,应该是浏览器header头设置信息不对,浏览器将图片的ANSI编码保存成文件的时候,数据流是ANSI编码,但是文件保存成UTF-8编码,导致出现这种情况,但是无论怎样设置Header头部信息都是这样,不能解决问题。最后直接自己写了一个方法,然后将这个方法放到框架外面,框架直接调用这个方法。
新写的方法:
<?php
Class Down
{
public function downPhoto($png,$project,$filePath='')
{
$file = $_SERVER['DOCUMENT_ROOT'].$filePath.$project.'/'.$png;
if(!file_exists($file) || !is_file($file) || !is_readable($file)){
echo "$png 不存在或者不是一个文件或者不可读!";
return ;
}
$fp = fopen($file,'r');
$file_size = filesize($file);
header("Content-type:application/octet-stream");
header("Content-Type: image/png");
header('Content-Transfer-Encoding: binary');
header("Accept-Ranges:bytes");
header("Accept-Length:".$file_size);