• 基于php的AWS存储服务


    近几天用到了aws的s3存储服务,公司内部的完全兼容aws并对其进行了封装,之前也用过,现在把经验总结一下。

    既然要用,首先需要安装sdk,下边提供了几种安装方法

    方法一:使用composer安装

    1.先建立个安装目录,/opt/s3,本程序运行的实际工作目录是项目路径 /data/www/XXX,运行的其实是该目录下的vendor
    然后进到该目录 ,下载并安装composer , 因是在linux下,执行
    curl -sS https://getcomposer.org/installer | php
    如果是windows,参考官网安装
     
    2.键入Composer命令,安装开发工具包的最新稳定版本
    php -d memory_limit=-1 composer.phar require aws/aws-sdk-php
     
    3.在代码中包含进去
    <?php
        require '/opt/s3/vendor/autoload.php'
    ?>
    安装完成之后,会自动在/opt/s3目录下生成vendor目录
     
    方法二:也是使用composer安装
    1.下载并安装composer  ,在自己打算安装的目录,本文都以/opt/s3为例
    curl -sS https://getcomposer.org/installer | php
    

    该命令完成之后会生成composer.phar文件

    2.在/opt/s3下创建composer.json,添加如下代码

    {
       "require": {
         "aws/aws-sdk-php": "2.*"   //此处如果添加2.*版本如是填,如添加3.*版本,改成3.*即可
       }
    }
    

    3.安装

    php composer.phar install
    

    4.在代码中包含进去

    <?php
        require '/opt/s3/vendor/autoload.php'
    ?>
     
    方法三:使用打包的phar进行安装
    下载打包的phar 包含到代码中
    <?php require '/opt/s3/aws.phar'; ?>
    

    方法四:使用zip文件安装

    下载.zip文件,解压到/opt/s3目录

    <?php require '/opt/s3/aws-autoloader.php'; ?>
    

      

    安装完成之后,只是基础工作,然后在代码使用如下,本人用的yii框架

    <?php
    namespace appcommands;
    require '/opt/s3/vendor/autoload.php';
    use AwsS3S3Client;
    use AwsExceptionAwsException;
    
    class TestController extends Controller
    {
        public function actionBucket()
        {
            $options = [
                'region'            => 'bjcc',  //此处填区域 
                'version'           => '2006-03-01',
                'signature_version' => 'v4',
                'use_path_style_endpoint' => true,
                'endpoint' => 'http://zeppelin-gateway-host', //此处填文件存储在哪里的地址
                'credentials' => [
                    'key'    => '**********',
                    'secret' => '**************' //填上申请的key和secret
                ]
            ];
    
            $s3 = new S3Client($options);
            $result = $s3->putObject([
                'Bucket' => 'test',
                'Key'    => 'yang',
                'Body'   => 'hello'
            ]);
            print_r($result);
    
    }

    基于yii框架的使用:(本人的项目用的yii框架)

    进入到代码目录 比如 /data/www/xxx,这个目录自带vendor目录,都是第三方库,直接再这里执行方法一,完成之后会在里边生成aws的目录,然后调用直接使用即可。

    可以写个通用类:

    常用的api

    1.获取objecturl

    $url = $s3Client->getObjectUrl('my-bucket', 'my-key'); 

    2.创建bucket

    $result = $s3Client->createBucket(array('Bucket' => $testbk));

    3.put object

    $result = $s3Client->putObject(array(

        'Bucket' => $testbk,
        'Key' => $testkey,
        'Body' => 'hello'
    ));

    4.get Object

    $result = $s3Client->getObject(array(
        'Bucket' => $testbk,
        'Key' => $testkey
    ));

    5.delete object

    $result = $s3Client->deleteObject(array(
        'Bucket' => $testbk,
        'Key' => $testkey
    ));

    6.delete bucket

    $result = $s3Client->deleteBucket(array(
    'Bucket' => $testbk,
    ));

    7.上传

    $uploader = new MultipartUploader($s3, self::PATH.$n, [
        'bucket' => BT,
        'key' => $n
    ]);
    try {
        $result = $uploader->upload();
    } catch (MultipartUploadException $e) {
        echo $e->getMessage();
    }

     

    官网参考文档:https://docs.aws.amazon.com/zh_cn/sdk-for-php/v3/developer-guide/getting-started_installation.html

                                 http://easydoc.qihoo.net/doc?project=1d1b49835cbb989968925b2553243a0a&doc=700b7f4cde1360f7e24a9868ad517ca0&config=title_menu_toc

  • 相关阅读:
    JVM内存区域与内存溢出异常
    蓄水池抽样算法应用
    InnoDB引擎的索引和存储结构
    ASP.NET Core Web API 集成测试中使用 Bearer Token
    ASP.NET Core Web API 集成测试
    测试 ASP.NET Core API Controller
    使用 coverlet 查看.NET Core应用的测试覆盖率
    使用 Moq 测试.NET Core 应用 -- 其它
    使用 Moq 测试.NET Core 应用 -- Mock 行为
    使用 Moq 测试.NET Core 应用 -- Mock 属性
  • 原文地址:https://www.cnblogs.com/kumufengchun/p/9815415.html
Copyright © 2020-2023  润新知