mirror of
https://github.com/nextcloud/server.git
synced 2026-02-20 00:12:30 -05:00
Large Object support for OpenStack Swift.
Until now, you wouldn't be able to create objects larger that 5GB. It's somewhat related with pull #18883 Signed-off-by: Adrian Brzezinski <adrian.brzezinski@eo.pl>
This commit is contained in:
parent
2d7f71faca
commit
e107519295
1 changed files with 14 additions and 4 deletions
|
|
@ -32,6 +32,8 @@ use OCP\Files\ObjectStore\IObjectStore;
|
|||
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 @@ 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…
Reference in a new issue