diff --git a/module/file/control.php b/module/file/control.php index f1a63316ad..d4c37047f0 100644 --- a/module/file/control.php +++ b/module/file/control.php @@ -149,8 +149,7 @@ class file extends control /* Down the file. */ $fileName = $file->title; if(!preg_match("/\.{$file->extension}$/", $fileName)) $fileName .= '.' . $file->extension; - $fileData = file_get_contents($file->realPath); - $this->sendDownHeader($fileName, $file->extension, $fileData); + $this->sendDownHeader($fileName, $file->extension, $file->realPath, 'file'); } } else @@ -244,9 +243,9 @@ class file extends control * @access public * @return void */ - public function sendDownHeader($fileName, $fileType, $content) + public function sendDownHeader($fileName, $fileType, $content, $type = 'content') { - $this->file->sendDownHeader($fileName, $fileType, $content); + $this->file->sendDownHeader($fileName, $fileType, $content, $type); } /** diff --git a/module/file/model.php b/module/file/model.php index a48d187cab..ac16d9664a 100644 --- a/module/file/model.php +++ b/module/file/model.php @@ -869,7 +869,7 @@ class fileModel extends model * @access public * @return void */ - public function sendDownHeader($fileName, $fileType, $content) + public function sendDownHeader($fileName, $fileType, $content, $type = 'content') { /* Clean the ob content to make sure no space or utf-8 bom output. */ $obLevel = ob_get_level(); @@ -893,6 +893,14 @@ class fileModel extends model header("Content-Disposition: attachment; filename=\"$fileName\""); header("Pragma: no-cache"); header("Expires: 0"); - die($content); + if($type == 'content') die($content); + if($type == 'file' and file_exists($content)) + { + $chunkSize = 1024 * 1024; + $handle = fopen($content, "r"); + while(!feof($handle)) echo fread($handle, $chunkSize); + fclose($handle); + die(); + } } }