天天看點

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

php如何使用S3

去下載下傳aws.zip 源碼包 :https://github.com/aws/aws-sdk-php/releases?after=3.11.1  放到項目裡面

php如何使用S3

使用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轉一下傳回回去。

aws

繼續閱讀