diff options
author | Mike Frysinger <[email protected]> | 2013-04-02 00:56:20 -0400 |
---|---|---|
committer | Mike Frysinger <[email protected]> | 2013-04-02 00:56:20 -0400 |
commit | 2d0838e6d3e8f15b0f1d62111499ee551935c218 (patch) | |
tree | 8cd72a8fb8d7f74292195c16849f0d43088be0df | |
parent | f2c624a23640eb1e47d83842d0bf8303209155b6 (diff) |
add optional support for the X-Sendfile header
-rw-r--r-- | image.php | 22 |
1 files changed, 16 insertions, 6 deletions
@@ -27,12 +27,22 @@ $filename = CACHE_DIR . '/images/' . $hash . '.png'; if (file_exists($filename)) { - header("Content-type: image/png"); - $stamp = gmdate("D, d M Y H:i:s", filemtime($filename)). " GMT"; - header("Last-Modified: $stamp", true); - - readfile($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); + readfile($filename); + } } else { header($_SERVER["SERVER_PROTOCOL"]." 404 Not Found"); echo "File not found."; |