diff --git a/lib/private/Files/ObjectStore/Swift.php b/lib/private/Files/ObjectStore/Swift.php index 9a2aa82295e8f..33a8310fc9fa2 100644 --- a/lib/private/Files/ObjectStore/Swift.php +++ b/lib/private/Files/ObjectStore/Swift.php @@ -32,6 +32,8 @@ use OCP\Files\StorageAuthException; use OpenStack\Common\Error\BadResponseError; +const SWIFT_SEGMENT_SIZE = 1073741824; // 1GB + class Swift implements IObjectStore { /** * @var array @@ -80,10 +82,18 @@ public function writeObject($urn, $stream) { file_put_contents($tmpFile, $stream); $handle = fopen($tmpFile, 'rb'); - $this->getContainer()->createObject([ - 'name' => $urn, - 'stream' => stream_for($handle) - ]); + if (filesize($tmpFile) < SWIFT_SEGMENT_SIZE) { + $this->getContainer()->createObject([ + 'name' => $urn, + 'stream' => stream_for($handle) + ]); + } else { + $this->getContainer()->createLargeObject([ + 'name' => $urn, + 'stream' => stream_for($handle), + 'segmentSize' => SWIFT_SEGMENT_SIZE + ]); + } } /**