php如何使用S3

本篇是新手使用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轉一下返回回去。

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章