|
|
|
@ -77,6 +77,13 @@ trait S3ObjectTrait { |
|
|
|
|
return $fh; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private function buildS3Metadata(array $metadata): array { |
|
|
|
|
$result = []; |
|
|
|
|
foreach ($metadata as $key => $value) { |
|
|
|
|
$result['x-amz-meta-' . $key] = $value; |
|
|
|
|
} |
|
|
|
|
return $result; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* Single object put helper |
|
|
|
@ -87,12 +94,15 @@ trait S3ObjectTrait { |
|
|
|
|
* @throws \Exception when something goes wrong, message will be logged |
|
|
|
|
*/ |
|
|
|
|
protected function writeSingle(string $urn, StreamInterface $stream, array $metaData): void { |
|
|
|
|
$mimetype = $metaData['mimetype'] ?? null; |
|
|
|
|
unset($metaData['mimetype']); |
|
|
|
|
$this->getConnection()->putObject([ |
|
|
|
|
'Bucket' => $this->bucket, |
|
|
|
|
'Key' => $urn, |
|
|
|
|
'Body' => $stream, |
|
|
|
|
'ACL' => 'private', |
|
|
|
|
'ContentType' => $metaData['mimetype'] ?? null, |
|
|
|
|
'ContentType' => $mimetype, |
|
|
|
|
'Metadata' => $this->buildS3Metadata($metaData), |
|
|
|
|
'StorageClass' => $this->storageClass, |
|
|
|
|
] + $this->getSSECParameters()); |
|
|
|
|
} |
|
|
|
@ -107,13 +117,16 @@ trait S3ObjectTrait { |
|
|
|
|
* @throws \Exception when something goes wrong, message will be logged |
|
|
|
|
*/ |
|
|
|
|
protected function writeMultiPart(string $urn, StreamInterface $stream, array $metaData): void { |
|
|
|
|
$mimetype = $metaData['mimetype'] ?? null; |
|
|
|
|
unset($metaData['mimetype']); |
|
|
|
|
$uploader = new MultipartUploader($this->getConnection(), $stream, [ |
|
|
|
|
'bucket' => $this->bucket, |
|
|
|
|
'concurrency' => $this->concurrency, |
|
|
|
|
'key' => $urn, |
|
|
|
|
'part_size' => $this->uploadPartSize, |
|
|
|
|
'params' => [ |
|
|
|
|
'ContentType' => $metaData['mimetype'] ?? null, |
|
|
|
|
'ContentType' => $mimetype, |
|
|
|
|
'Metadata' => $this->buildS3Metadata($metaData), |
|
|
|
|
'StorageClass' => $this->storageClass, |
|
|
|
|
] + $this->getSSECParameters(), |
|
|
|
|
]); |
|
|
|
|