summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--system/helpers/download_helper.php16
1 files changed, 11 insertions, 5 deletions
diff --git a/system/helpers/download_helper.php b/system/helpers/download_helper.php
index 3701e0b8b..a6463dfd7 100644
--- a/system/helpers/download_helper.php
+++ b/system/helpers/download_helper.php
@@ -121,6 +121,11 @@ if ( ! function_exists('force_download'))
$filename = implode('.', $x);
}
+ if ($data === NULL && ($fp = @fopen($filepath, 'rb')) === FALSE)
+ {
+ return;
+ }
+
// Clean output buffer
if (ob_get_level() !== 0 && @ob_end_clean() === FALSE)
{
@@ -141,12 +146,13 @@ if ( ! function_exists('force_download'))
exit($data);
}
- // Flush the file
- if (@readfile($filepath) === FALSE)
- {
- return;
- }
+ // Flush 1MB chunks of data
+ while ( ! feof($fp) && ($data = fread($fp, 1048576)) !== FALSE)
+ {
+ echo $data;
+ }
+ fclose($fp);
exit;
}
}