Browse Source
Merge pull request #18955 from adrb/swift_upload_large_objects
Large Object support for OpenStack Swift
pull/20841/head
Roeland Jago Douma
6 years ago
committed by
GitHub
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with
14 additions and
4 deletions
-
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 |
|
|
|
]); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
|