diff --git a/lib/files.php b/lib/files.php
index a7b83149574fd6a2f594c556802a1a0b7fd8aaff..107605fc34e4c45787c7e1296695fbe99734c621 100644
--- a/lib/files.php
+++ b/lib/files.php
@@ -119,7 +119,14 @@ class OC_Files {
 		}
 		@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);