一尘不染

PHP,使用Header()显示图像

php

我从网络根目录外部显示图像,如下所示:

header('Content-type:image/png');
readfile($fullpath);

内容类型:image / png使我感到困惑。

有人用此代码帮助了我,但我注意到并非所有图像都是PNG。许多是jpg或gif。
仍然可以成功显示它们。

有人知道为什么吗?


阅读 673

收藏
2020-05-26

共1个答案

一尘不染

最好的解决方案是读取文件,然后确定它是哪种图像并发送适当的标头

$filename = basename($file);
$file_extension = strtolower(substr(strrchr($filename,"."),1));

switch( $file_extension ) {
    case "gif": $ctype="image/gif"; break;
    case "png": $ctype="image/png"; break;
    case "jpeg":
    case "jpg": $ctype="image/jpeg"; break;
    case "svg": $ctype="image/svg+xml"; break;
    default:
}

header('Content-type: ' . $ctype);

(注意:JPG文件的正确内容类型是image/jpeg

2020-05-26