Implemented X-Sendfile support

This commit is contained in:
Valerio Ponte 2012-10-12 22:07:00 +02:00
parent 8b03b683df
commit 8420b9bf67
1 changed files with 14 additions and 0 deletions

View File

@ -195,6 +195,7 @@ class OC_FilesystemView {
return $this->basicOperation('filesize', $path); return $this->basicOperation('filesize', $path);
} }
public function readfile($path) { public function readfile($path) {
$this->addSendfileHeaders($path);
@ob_end_clean(); @ob_end_clean();
$handle=$this->fopen($path, 'rb'); $handle=$this->fopen($path, 'rb');
if ($handle) { if ($handle) {
@ -208,6 +209,19 @@ class OC_FilesystemView {
} }
return false; return false;
} }
/* This adds the proper header to let the web server handle
* the file transfer, if it's configured through the right
* environment variable
*/
private function addSendfileHeaders($path) {
$storage = $this->getStorage($path);
if ($storage instanceof OC_Filestorage_Local) {
if (isset($_SERVER['MOD_X_ACCEL_REDIRECT_ENABLED']))
header("X-Accel-Redirect: " . $this->getLocalFile($path));
if (isset($_SERVER['MOD_X_SENDFILE_ENABLED']))
header("X-Sendfile: " . $this->getLocalFile($path));
}
}
/** /**
* @deprecated Replaced by isReadable() as part of CRUDS * @deprecated Replaced by isReadable() as part of CRUDS
*/ */