基于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

原文地址:https://www.cnblogs.com/kumufengchun/p/9815415.html