Rev 17002 | AutorÃa | Ultima modificación | Ver Log |
<?phpnamespace LeadersLinked\Library;use Aws\S3\S3Client;class S3Files{/**** @var\LeadersLinked\Library\S3Files*/private static $_instance;/**** @var \Aws\S3\S3Client*/private $s3;/**** @var string*/private $bucket;/**** @param array $config*/private function __construct($config){$access_key = $config['leaderslinked.minio.access_key'];$secret_key = $config['leaderslinked.minio.secret_key'];$endpoint = $config['leaderslinked.minio.endpoint'];$this->bucket = $config['leaderslinked.minio.bucket'];$this->s3 = new \Aws\S3\S3Client(['version' => 'latest','region' => 'us-east-1','endpoint' => $endpoint,'use_path_style_endpoint' => true,'credentials' => ['key' => $access_key,'secret' => $secret_key,],]);$this->s3->registerStreamWrapper();}/**** @return string*/public function getBucket(){return $this->bucket;}/**** @param array $config* @return \LeadersLinked\Library\S3Files*/public static function getInstance($config){if(self::$_instance == null) {self::$_instance = new S3Files($config);}return self::$_instance;}/**** @param string $key* @return boolean*/public function objectExist($key){return $this->s3->doesObjectExist($this->bucket, $key);}/**** @param string $remoto* @return string*/public function getPresignedUrl($remoto){$command = $this->s3->getCommand('GetObject', ['Bucket' => $this->bucket,'Key' => $remoto]);// Create a pre-signed URL for a request with duration of 10 miniutes$presignedRequest = $this->s3->createPresignedRequest($command, '+10 minutes');// Get the actual presigned-url$presignedUrl = (string) $presignedRequest->getUri();return $presignedUrl;}/**** @param string $remote* @param string $local* @return boolean*/public function putObject($remote, $local){try {$this->s3->putObject(['Bucket' => $this->bucket,'Key' => $remote,'SourceFile' => $local]);return true;} catch (\Exception $exception) {echo "No se pudo subir el archivo : $local (" . $exception->getMessage() . ")";return false;}}/**** @param string $remoto* @return boolean*/public function deleteObject($remoto){try {$this->s3->deleteObject(['Bucket' => $this->bucket,'Key' => $remoto,]);return true;} catch (\Exception $exception) {//echo "No se pudo borrar el archivo : $remoto (" . $exception->getMessage() . ")";return false;}}}