本篇是新手使用PHP調aws的s3服務的一些心得
一、關於AWS-S3
s3是一個文件存儲服務,當需要做成服務來進行微服務調用,或者終端服務端文件交流使用s3是一個非常不錯的選擇、
aws各種常見的語言例如:Java,Python,PHP,golang等都是有SDK的,可以通過SDK幾行代碼就操作s3
二、PHP調s3的SDK
PHP調用s3有多種方式,如果項目沒用composer這種東西,而是用PHP原生或者簡單的框架,那麼使用源碼方式最好不過了。
下面是PHP調用s3的文檔,包括使用源代碼還有使用包管理來安裝使用AWS-SDK
https://ecloud.10086.cn/op-help-center/develop/S3%20PHP%20SDK.pdf
去下載aws.zip 源碼包 :https://github.com/aws/aws-sdk-php/releases?after=3.11.1 放到項目裏面
使用s3,下面是從s3取文件的代碼demo
//獲取s3的配置,包括access_key,secret_key,bucket,endpoint
$s3Info = $this->getFromConf();
//引入sdk的加載文件
require_once(dirname(__DIR__) . '/aws/aws-autoloader.php');
$file = null;
try{
$client = new S3Client([
'region' => '',
'version' => 'latest',
'endpoint' => 'http://10.95.110.110:8080',
'credentials' => [
'key' => $s3Info['access_key'],
'secret' => $s3Info['secret_key']
],
'use_path_style_endpoint' => true
]);
$file = $client->getObject(['Bucket' => $s3Info['bucket'], 'Key' => $filename]);
}catch(\Exception $e){
Yii::log("get img from s3 exception >>>> $e " ,CLogger::LEVEL_ERROR, __CLASS__);
return '';
}
$body = $file['Body']->getContents(); //拿到的是文件的內容
最後返回的$file['body']是文件的內容,比如txt文件就是文件內寫的東西、
如果存儲的是圖片直接 'data:image/jpg;base64,'.base64_encode($body); 用base64轉一下返回回去。