diff --git a/lib/private/Streamer.php b/lib/private/Streamer.php
index a05f77f3cbd2a93c8cbeb32dcda662d2e9b0ebf9..0e3018f77b7f70cdca254a3306f56f03b6906d8b 100644
--- a/lib/private/Streamer.php
+++ b/lib/private/Streamer.php
@@ -76,8 +76,12 @@ class Streamer {
 		 * would still be possible to create an invalid zip32 file (for example,
 		 * a zip file from files smaller than 4GB with a central directory
 		 * larger than 4GiB), but it should not happen in the real world.
+		 *
+		 * We also have to check for a size above 0. As negative sizes could be
+		 * from not fully scanned external storages. And then things fall apart
+		 * if somebody tries to package to much.
 		 */
-		if ($size < 4 * 1000 * 1000 * 1000 && $numberOfFiles < 65536) {
+		if ($size > 0 && $size < 4 * 1000 * 1000 * 1000 && $numberOfFiles < 65536) {
 			$this->streamerInstance = new ZipStreamer(['zip64' => false]);
 		} elseif ($request->isUserAgent($this->preferTarFor)) {
 			$this->streamerInstance = new TarStreamer();