Merge pull request #18955 from adrb/swift_upload_large_objects

Large Object support for OpenStack Swift
pull/20841/head
Roeland Jago Douma 5 years ago committed by GitHub
commit d5850eb28f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 18
      lib/private/Files/ObjectStore/Swift.php

@ -33,6 +33,8 @@ use OCP\Files\NotFoundException;
use OCP\Files\ObjectStore\IObjectStore;
use OCP\Files\StorageAuthException;
const SWIFT_SEGMENT_SIZE = 1073741824; // 1GB
class Swift implements IObjectStore {
/**
* @var array
@ -81,10 +83,18 @@ class Swift implements IObjectStore {
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
]);
}
}
/**

Loading…
Cancel
Save