add SeedDMS_Preview_Base::sendfile() which uses xsendfile if available

This commit is contained in:
Uwe Steinmann 2018-01-18 08:45:34 +01:00
parent bcef2d3d63
commit a28d121610
3 changed files with 23 additions and 4 deletions

View File

@ -129,5 +129,24 @@ class SeedDMS_Preview_Base {
return array_key_exists($mimetype, $this->converters) && $this->converters[$mimetype];
} /* }}} */
/**
* Send a file from disk to the browser
*
* This function uses either readfile() or the xѕendfile apache module if
* it is installed.
*
* @param string $filename
*/
protected function sendFile($filename) { /* {{{ */
if(function_exists('apache_get_modules') && in_array('mod_xsendfile',apache_get_modules())) {
header("X-Sendfile: ".$filename);
} else {
/* Make sure output buffering is off */
if (ob_get_level()) {
ob_end_clean();
}
readfile($filename);
}
} /* }}} */
}

View File

@ -196,7 +196,7 @@ class SeedDMS_Preview_PdfPreviewer extends SeedDMS_Preview_Base {
$target = $this->previewDir.$dir.md5($infile);
if($target && file_exists($target.'.pdf')) {
readfile($target.'.pdf');
$this->sendFile($target.'.pdf');
}
} /* }}} */
@ -215,7 +215,7 @@ class SeedDMS_Preview_PdfPreviewer extends SeedDMS_Preview_Base {
$target = $this->getFileName($object);
if($target && file_exists($target.'.pdf')) {
readfile($target.'.pdf');
$this->sendFile($target.'.pdf');
}
} /* }}} */

View File

@ -247,7 +247,7 @@ class SeedDMS_Preview_Previewer extends SeedDMS_Preview_Base {
$target = $this->previewDir.$dir.md5($infile).'-'.$width;
if($target && file_exists($target.'.png')) {
readfile($target.'.png');
$this->sendFile($target.'.png');
}
} /* }}} */
@ -271,7 +271,7 @@ class SeedDMS_Preview_Previewer extends SeedDMS_Preview_Base {
$target = $this->getFileName($object, $width);
if($target && file_exists($target.'.png')) {
readfile($target.'.png');
$this->sendFile($target.'.png');
}
} /* }}} */