diff options
Diffstat (limited to 'lib/files.php')
-rw-r--r-- | lib/files.php | 19 |
1 files changed, 13 insertions, 6 deletions
diff --git a/lib/files.php b/lib/files.php index 01558a68588..107605fc34e 100644 --- a/lib/files.php +++ b/lib/files.php @@ -104,22 +104,29 @@ class OC_Files { header('Content-Type: application/zip'); header('Content-Length: ' . filesize($filename)); }else{ - header('Content-Type: ' . OC_Filesystem::getMimeType($filename)); - header('Content-Length: ' . OC_Filesystem::filesize($filename)); + $fileData=OC_FileCache::get($filename); + header('Content-Type: ' . $fileData['mimetype']); + header('Content-Length: ' . $fileData['size']); } }elseif($zip or !OC_Filesystem::file_exists($filename)){ header("HTTP/1.0 404 Not Found"); $tmpl = new OC_Template( '', '404', 'guest' ); $tmpl->assign('file',$filename); $tmpl->printPage(); -// die('404 Not Found'); }else{ header("HTTP/1.0 403 Forbidden"); die('403 Forbidden'); } @ob_end_clean(); if($zip){ - readfile($filename); + $handle=fopen($filename,'r'); + if ($handle) { + $chunkSize = 8*1024;// 1 MB chunks + while (!feof($handle)) { + echo fread($handle, $chunkSize); + flush(); + } + } unlink($filename); }else{ OC_Filesystem::readfile($filename); @@ -225,7 +232,7 @@ class OC_Files { */ static function validateZipDownload($dir, $files) { if(!OC_Config::getValue('allowZipDownload', true)) { - $l = new OC_L10N('files'); + $l = OC_L10N::get('files'); header("HTTP/1.0 409 Conflict"); $tmpl = new OC_Template( '', 'error', 'user' ); $errors = array( @@ -250,7 +257,7 @@ class OC_Files { $totalsize += OC_Filesystem::filesize($dir.'/'.$files); } if($totalsize > $zipLimit) { - $l = new OC_L10N('files'); + $l = OC_L10N::get('files'); header("HTTP/1.0 409 Conflict"); $tmpl = new OC_Template( '', 'error', 'user' ); $errors = array( |