X-Git-Url: https://git.wh0rd.org/?a=blobdiff_plain;f=image.php;h=a134e658e88c4a6b28e1c4b5f05d39e55c899f13;hb=89018afa13887c46de4c8ef8189fc7b500cdac0f;hp=cccda64b73380d0336aefedbff33f19a6c0fa0c1;hpb=05809dfdf7cbf7699be6408c0f49d325585726b5;p=tt-rss.git diff --git a/image.php b/image.php index cccda64b..a134e658 100644 --- a/image.php +++ b/image.php @@ -27,8 +27,24 @@ $filename = CACHE_DIR . '/images/' . $hash . '.png'; if (file_exists($filename)) { - header("Content-type: image/png"); - echo file_get_contents($filename); + /* See if we can use X-Sendfile */ + $xsendfile = false; + if (function_exists('apache_get_modules') && + array_search('mod_xsendfile', apache_get_modules())) + $xsendfile = true; + + if ($xsendfile) { + header("X-Sendfile: $filename"); + header("Content-type: application/octet-stream"); + header('Content-Disposition: attachment; filename="' . basename($filename) . '"'); + } else { + header("Content-type: image/png"); + $stamp = gmdate("D, d M Y H:i:s", filemtime($filename)). " GMT"; + header("Last-Modified: $stamp", true); + ob_clean(); // discard any data in the output buffer (if possible) + flush(); // flush headers (if possible) + readfile($filename); + } } else { header($_SERVER["SERVER_PROTOCOL"]." 404 Not Found"); echo "File not found.";