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转一下返回回去。

 

 

 

 

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