summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--apps/files/download.php7
-rw-r--r--lib/files.php7
2 files changed, 12 insertions, 2 deletions
diff --git a/apps/files/download.php b/apps/files/download.php
index 6475afb56e0..e2149cd4135 100644
--- a/apps/files/download.php
+++ b/apps/files/download.php
@@ -40,7 +40,12 @@ if(!OC_Filesystem::file_exists($filename)) {
$ftype=OC_Filesystem::getMimeType( $filename );
header('Content-Type:'.$ftype);
-header('Content-Disposition: attachment; filename="'.basename($filename).'"');
+if ( preg_match( "/MSIE/", $_SERVER["HTTP_USER_AGENT"] ) ) {
+ header( 'Content-Disposition: attachment; filename="' . rawurlencode( basename($filename) ) . '"' );
+} else {
+ header( 'Content-Disposition: attachment; filename*=UTF-8\'\'' . rawurlencode( basename($filename) )
+ . '; filename="' . rawurlencode( basename($filename) ) . '"' );
+}
OCP\Response::disableCaching();
header('Content-Length: '.OC_Filesystem::filesize($filename));
diff --git a/lib/files.php b/lib/files.php
index 152ed8f34a7..f8bae778ed2 100644
--- a/lib/files.php
+++ b/lib/files.php
@@ -197,7 +197,12 @@ class OC_Files {
}
OC_Util::obEnd();
if($zip or OC_Filesystem::is_readable($filename)) {
- header('Content-Disposition: attachment; filename="'.basename($filename).'"');
+ if ( preg_match( "/MSIE/", $_SERVER["HTTP_USER_AGENT"] ) ) {
+ header( 'Content-Disposition: attachment; filename="' . rawurlencode( basename($filename) ) . '"' );
+ } else {
+ header( 'Content-Disposition: attachment; filename*=UTF-8\'\'' . rawurlencode( basename($filename) )
+ . '; filename="' . rawurlencode( basename($filename) ) . '"' );
+ }
header('Content-Transfer-Encoding: binary');
OC_Response::disableCaching();
if($zip) {