|
|
<?php |
|
|
namespace app\common\extend\upload; |
|
|
|
|
|
use Aws\S3\S3Client; |
|
|
use Aws\Exception\AwsException; |
|
|
|
|
|
class S3 |
|
|
{ |
|
|
public $name = 'S3'; |
|
|
public $ver = '1.0'; |
|
|
private $config = []; |
|
|
|
|
|
public function __construct($config = []) { |
|
|
$this->config = $config; |
|
|
} |
|
|
|
|
|
public function submit($file_path) |
|
|
{ |
|
|
$bucket = $GLOBALS['config']['upload']['api']['s3']['bucket']; |
|
|
$accessKey = $GLOBALS['config']['upload']['api']['s3']['accesskey']; |
|
|
$secretKey = $GLOBALS['config']['upload']['api']['s3']['secretkey']; |
|
|
$region = $GLOBALS['config']['upload']['api']['s3']['region']; |
|
|
|
|
|
require_once ROOT_PATH . 'extend/aws/autoload.php'; |
|
|
$s3 = new S3Client([ |
|
|
'region' => $region, |
|
|
'version' => '2006-03-01', |
|
|
'credentials' => [ |
|
|
'key' => $accessKey, |
|
|
'secret' => $secretKey |
|
|
] |
|
|
]); |
|
|
try { |
|
|
$filePath = ROOT_PATH . $file_path; |
|
|
$result = $s3->putObject([ |
|
|
'Bucket' => $bucket, |
|
|
'Key' => $file_path, |
|
|
'Body' => fopen($filePath, 'r'), |
|
|
'ACL' => 'public-read' |
|
|
]); |
|
|
} catch (AwsException $e) { |
|
|
echo $e->getMessage() . "\n"; |
|
|
} |
|
|
|
|
|
empty($this->config['keep_local']) && @unlink($filePath); |
|
|
return $result['ObjectURL']; |
|
|
} |
|
|
} |
|
|
|