Skip to content
Snippets Groups Projects
Commit c67778ec authored by Andreas Gohr's avatar Andreas Gohr
Browse files

Merge pull request #517 from gamma/master

Add the original filename to sendFile for Content-Disposition
parents 9585623d 2fd6745d
No related branches found
No related tags found
No related merge requests found
......@@ -15,13 +15,15 @@
*
* @author Andreas Gohr <andi@splitbrain.org>
* @author Ben Coburn <btcoburn@silicodon.net>
* @author Gerry Weissbach <dokuwiki@gammaproduction.de>
* @param string $file local file to send
* @param string $mime mime type of the file
* @param bool $dl set to true to force a browser download
* @param int $cache remaining cache time in seconds (-1 for $conf['cache'], 0 for no-cache)
* @param bool $public is this a public ressource or a private one?
* @param string $orig original file to send - the file name will be used for the Content-Disposition
*/
function sendFile($file, $mime, $dl, $cache, $public = false) {
function sendFile($file, $mime, $dl, $cache, $public = false, $orig = null) {
global $conf;
// send mime headers
header("Content-Type: $mime");
......@@ -62,11 +64,16 @@ function sendFile($file, $mime, $dl, $cache, $public = false) {
$fmtime = @filemtime($file);
http_conditionalRequest($fmtime);
// Use the current $file if is $orig is not set.
if ( $orig == null ) {
$orig = $file;
}
//download or display?
if($dl) {
header('Content-Disposition: attachment; filename="'.utf8_basename($file).'";');
header('Content-Disposition: attachment; filename="'.utf8_basename($orig).'";');
} else {
header('Content-Disposition: inline; filename="'.utf8_basename($file).'";');
header('Content-Disposition: inline; filename="'.utf8_basename($orig).'";');
}
//use x-sendfile header to pass the delivery to compatible webservers
......
......@@ -89,7 +89,7 @@ if (defined('SIMPLE_TEST')) {
// finally send the file to the client
$evt = new Doku_Event('MEDIA_SENDFILE', $data);
if($evt->advise_before()) {
sendFile($data['file'], $data['mime'], $data['download'], $data['cache'], $data['ispublic']);
sendFile($data['file'], $data['mime'], $data['download'], $data['cache'], $data['ispublic'], $data['orig']);
}
// Do something after the download finished.
$evt->advise_after(); // will not be emitted on 304 or x-sendfile
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment