summaryrefslogtreecommitdiffstats
path: root/system/helpers/download_helper.php
diff options
context:
space:
mode:
authorAndrey Andreev <narf@bofh.bg>2012-03-13 11:51:33 +0100
committerAndrey Andreev <narf@bofh.bg>2012-03-13 11:51:33 +0100
commitc1cda232d690723db6e704b738c91f84cfc49a9e (patch)
treea7e91130e3b6139f5ce9f515635863eee457cb7e /system/helpers/download_helper.php
parent30da39bb5d65c37203c12a42dfc50f7d231fb2d1 (diff)
parentd153002858256c6f206c8877f4952ed075902f9e (diff)
Merge upstream branch
Diffstat (limited to 'system/helpers/download_helper.php')
-rw-r--r--system/helpers/download_helper.php26
1 files changed, 19 insertions, 7 deletions
diff --git a/system/helpers/download_helper.php b/system/helpers/download_helper.php
index f3f0ff2ca..96ff29dec 100644
--- a/system/helpers/download_helper.php
+++ b/system/helpers/download_helper.php
@@ -60,19 +60,19 @@ if ( ! function_exists('force_download'))
// Set the default MIME type to send
$mime = 'application/octet-stream';
+ $x = explode('.', $filename);
+ $extension = end($x);
+
if ($set_mime === TRUE)
{
- /* If we're going to detect the MIME type,
- * we'll need a file extension.
- */
- if (FALSE === strpos($filename, '.'))
+ if (count($x) === 1 OR $extension === '')
{
+ /* If we're going to detect the MIME type,
+ * we'll need a file extension.
+ */
return FALSE;
}
- $extension = explode('.', $filename);
- $extension = end($extension);
-
// Load the mime types
if (defined('ENVIRONMENT') && is_file(APPPATH.'config/'.ENVIRONMENT.'/mimes.php'))
{
@@ -90,6 +90,18 @@ if ( ! function_exists('force_download'))
}
}
+ /* It was reported that browsers on Android 2.1 (and possibly older as well)
+ * need to have the filename extension upper-cased in order to be able to
+ * download it.
+ *
+ * Reference: http://digiblog.de/2011/04/19/android-and-the-download-file-headers/
+ */
+ if (count($x) !== 1 && isset($_SERVER['HTTP_USER_AGENT']) && preg_match('/Android\s(1|2\.[01])/', $_SERVER['HTTP_USER_AGENT']))
+ {
+ $x[count($x) - 1] = strtoupper($extension);
+ $filename = implode('.', $x);
+ }
+
// Generate the server headers
header('Content-Type: '.$mime);
header('Content-Disposition: attachment; filename="'.$filename.'"');