From: Valerio Ponte Date: Fri, 12 Oct 2012 20:07:00 +0000 (+0200) Subject: Implemented X-Sendfile support X-Git-Tag: v5.0.0alpha1~431^2~2 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=8420b9bf678d04558e7e32a5d034a1da6f49cabe;p=nextcloud-server.git Implemented X-Sendfile support --- diff --git a/lib/filesystemview.php b/lib/filesystemview.php index 0229213ebcb..a0ff527cd91 100644 --- a/lib/filesystemview.php +++ b/lib/filesystemview.php @@ -195,6 +195,7 @@ class OC_FilesystemView { return $this->basicOperation('filesize', $path); } public function readfile($path) { + $this->addSendfileHeaders($path); @ob_end_clean(); $handle=$this->fopen($path, 'rb'); if ($handle) { @@ -208,6 +209,19 @@ class OC_FilesystemView { } 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 */