diff --git a/apps/files/ajax/download.php b/apps/files/ajax/download.php
index b9a4ddaf5e7df297d3ad4c5666e35eec4f344a2b..163232ef0016d753f47ae8ff666a8a76711ba737 100644
--- a/apps/files/ajax/download.php
+++ b/apps/files/ajax/download.php
@@ -33,4 +33,11 @@ OCP\User::checkLoggedIn();
 $files = $_GET["files"];
 $dir = $_GET["dir"];
 
-OC_Files::get($dir, $files, $_SERVER['REQUEST_METHOD'] == 'HEAD' ? true : false);
+$files_list = json_decode($files);
+if ($files_list === NULL ) {
+	$files_list = array($files);
+}
+
+foreach ($files_list as $f) error_log("file: $f");
+
+OC_Files::get($dir, $files_list, $_SERVER['REQUEST_METHOD'] == 'HEAD' ? true : false);
diff --git a/apps/files/js/files.js b/apps/files/js/files.js
index 464f77036857c6ec85982976cf5bfc92a8848f89..a4ef41c280382cdf34925504d416ea0ea39777eb 100644
--- a/apps/files/js/files.js
+++ b/apps/files/js/files.js
@@ -220,14 +220,15 @@ $(document).ready(function() {
 	});
 
 	$('.download').click('click',function(event) {
-		var files=getSelectedFiles('name').join(';');
+		var files=getSelectedFiles('name');
+		var fileslist = JSON.stringify(files);
 		var dir=$('#dir').val()||'/';
 		OC.Notification.show(t('files','Your download is being prepared. This might take some time if the files are big.'));
 		// use special download URL if provided, e.g. for public shared files
 		if ( (downloadURL = document.getElementById("downloadURL")) ) {
 			window.location=downloadURL.value+"&download&files="+files;
 		} else {
-			window.location=OC.filePath('files', 'ajax', 'download.php') + '?'+ $.param({ dir: dir, files: files });
+			window.location=OC.filePath('files', 'ajax', 'download.php') + '?'+ $.param({ dir: dir, files: fileslist });
 		}
 		return false;
 	});
diff --git a/lib/files.php b/lib/files.php
index b594b78c4b768d7225368859535a76eb07b62ddd..ae3144de2c54e153f7524f2105394eae6adafa8e 100644
--- a/lib/files.php
+++ b/lib/files.php
@@ -49,8 +49,9 @@ class OC_Files {
 			isset($_SERVER['MOD_X_ACCEL_REDIRECT_ENABLED'])) {
 			$xsendfile = true;
 		}
-		if(strpos($files, ';')) {
-			$files=explode(';', $files);
+
+		if (count($files) == 1) {
+			$files = $files[0];
 		}
 
 		if (is_array($files)) {