add optional support for the X-Sendfile header

This commit is contained in:
Mike Frysinger 2013-04-02 00:56:20 -04:00
parent f2c624a236
commit 2d0838e6d3
1 changed files with 15 additions and 5 deletions

View File

@ -27,12 +27,22 @@
$filename = CACHE_DIR . '/images/' . $hash . '.png'; $filename = CACHE_DIR . '/images/' . $hash . '.png';
if (file_exists($filename)) { if (file_exists($filename)) {
header("Content-type: image/png"); /* See if we can use X-Sendfile */
$stamp = gmdate("D, d M Y H:i:s", filemtime($filename)). " GMT"; $xsendfile = false;
header("Last-Modified: $stamp", true); if (function_exists('apache_get_modules') &&
array_search('mod_xsendfile', apache_get_modules()))
readfile($filename); $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);
readfile($filename);
}
} else { } else {
header($_SERVER["SERVER_PROTOCOL"]." 404 Not Found"); header($_SERVER["SERVER_PROTOCOL"]." 404 Not Found");
echo "File not found."; echo "File not found.";