diff options
author | Roeland Jago Douma <roeland@famdouma.nl> | 2018-01-20 11:41:04 +0100 |
---|---|---|
committer | Roeland Jago Douma <roeland@famdouma.nl> | 2018-04-06 15:59:30 +0200 |
commit | 4a73f645e5a60d8adece72e6c231c2a1be13473d (patch) | |
tree | a9787088b5307f8b19e6a269f60bf42346a673b7 /lib/private/legacy/files.php | |
parent | e970e9f7106c094d49fd3ed49244fb073b97e381 (diff) | |
download | nextcloud-server-4a73f645e5a60d8adece72e6c231c2a1be13473d.tar.gz nextcloud-server-4a73f645e5a60d8adece72e6c231c2a1be13473d.zip |
Use zip32 if possible
* OSX doesn't handle 64zip that well
* Some other implentations don't handle it perfectly either
* If the file is belog 4GiB (some overhead) => zip32
* This covers the 99% case I bet
Signed-off-by: Roeland Jago Douma <roeland@famdouma.nl>
Diffstat (limited to 'lib/private/legacy/files.php')
-rw-r--r-- | lib/private/legacy/files.php | 17 |
1 files changed, 14 insertions, 3 deletions
diff --git a/lib/private/legacy/files.php b/lib/private/legacy/files.php index def9f82fab9..b7c99b7fef8 100644 --- a/lib/private/legacy/files.php +++ b/lib/private/legacy/files.php @@ -144,17 +144,28 @@ class OC_Files { } } - $streamer = new Streamer(); - OC_Util::obEnd(); - self::lockFiles($view, $dir, $files); + /* Calculate filesize */ + if ($getType === self::ZIP_FILES) { + $fileSize = 0; + foreach ($files as $file) { + $fileSize += \OC\Files\Filesystem::getFileInfo($dir . '/' . $file)->getSize(); + } + } elseif ($getType === self::ZIP_DIR) { + $fileSize = \OC\Files\Filesystem::getFileInfo($dir . '/' . $files)->getSize(); + } + + $streamer = new Streamer(\OC::$server->getRequest(), $fileSize); + OC_Util::obEnd(); + $streamer->sendHeaders($name); $executionTime = (int)OC::$server->getIniWrapper()->getNumeric('max_execution_time'); if (strpos(@ini_get('disable_functions'), 'set_time_limit') === false) { @set_time_limit(0); } ignore_user_abort(true); + if ($getType === self::ZIP_FILES) { foreach ($files as $file) { $file = $dir . '/' . $file; |