diff options
author | Björn Schießle <bjoern@schiessle.org> | 2013-03-07 05:45:19 -0800 |
---|---|---|
committer | Björn Schießle <bjoern@schiessle.org> | 2013-03-07 05:45:19 -0800 |
commit | 7c16c2c9ae2be3743a9ffc6a37484899784ed46c (patch) | |
tree | f9ef1bf8d985dc64edc3a526b48dbdf507b70e19 | |
parent | 97222b1de5349ac31abf518b7fd762b24947e237 (diff) | |
parent | ce9942331eb09b5e1ae6f38791776625f6663419 (diff) | |
download | nextcloud-server-7c16c2c9ae2be3743a9ffc6a37484899784ed46c.tar.gz nextcloud-server-7c16c2c9ae2be3743a9ffc6a37484899784ed46c.zip |
Merge pull request #2163 from owncloud/fix_file_download
json encode list of files
-rw-r--r-- | apps/files/ajax/download.php | 8 | ||||
-rw-r--r-- | apps/files/js/files.js | 5 | ||||
-rw-r--r-- | lib/files.php | 13 |
3 files changed, 20 insertions, 6 deletions
diff --git a/apps/files/ajax/download.php b/apps/files/ajax/download.php index b9a4ddaf5e7..7c8dcb372e2 100644 --- a/apps/files/ajax/download.php +++ b/apps/files/ajax/download.php @@ -33,4 +33,10 @@ 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); +// in case we get only a single file +if ($files_list === NULL ) { + $files_list = array($files); +} + +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 464f7703685..a4ef41c2803 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 b594b78c4b7..447ffb50577 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)) { @@ -77,7 +78,13 @@ class OC_Files { } } $zip->close(); - $name = basename($dir) . '.zip'; + $basename = basename($dir); + if ($basename) { + $name = $basename . '.zip'; + } else { + $name = 'owncloud.zip'; + } + set_time_limit($executionTime); } elseif (\OC\Files\Filesystem::is_dir($dir . '/' . $files)) { self::validateZipDownload($dir, $files); |