I'm displaying images from outside my web root, like this:
header('Content-type:image/png');
readfile($fullpath);
The content-type: image/png is what confuses me.
Someone else helped me out with this code, but I noticed that not all images are PNG. Many are jpg or gif.
And still they are displayed successfully.
does anyone know why?
The best solution would be to read in the file, then decide which kind of image it is and send out the appropriate header
$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);
(Note: the correct content-type for JPG files is image/jpeg
)