对象存储-OSS

对象存储-OSS

一、使用场景

图片和音视频等应用的海量存储

OSS可用于图片、音视频、日志等海量文件的存储。各种终端设备、Web网站程序、移动应用可以直接向OSS写入或读取数据。OSS支持流式写入和文件写入两种方式,如下图所示:

1.jpg

网页或者移动应用的静态和动态资源分离

利用BGP带宽,OSS可以实现超低延时的数据直接下载。也可以配合阿里云CDN加速服务,为图片、音视频、移动应用的更新分发提供最佳体验,如下图所示:

2.jpg

云端数据处理

上传文件到OSS后,可以配合媒体转码服务(MTS)和图片处理服务(IMG)进行云端的数据处理,如下图所示:

3.jpg

二、php安装代码api

1,源码方式安装

使用SDK源码,在发布页面中,选择相应版本,下载已经打包好的zip文件,解压后的根目录中包含一个autoload.php文件,您需要在代码中引入这个文件:

require_once '/path/to/oss-sdk/autoload.php';

2,示例程序

通过下面的步骤运行示例程序:

  • 解压下载到的sdk包

  • 修改samples目录中的Config.php文件

    • 修改 OSS_ACCESS_ID, 您从OSS获得的AccessKeyId

    • 修改 OSS_ACCESS_KEY, 您从OSS获得的AccessKeySecret

    • 修改 OSS_ENDPOINT, 您选定的OSS数据中心访问域名,如 http://oss-cn-hangzhou.aliyuncs.com

    • 修改 OSS_TEST_BUCKET, 您要用来运行sample使用的bucket,sample 程序会在这个bucket中创建一些文件,注意不能用生产环境的bucket,以 免污染用户数据

  • 到samples目录中执行 php RunAll.php, 也可以单个运行某个Sample文件

3,新建OssClient

<?php
use OSS\OssClient;
use OSS\Core\OssException;
$accessKeyId = "<您从OSS获得的AccessKeyId>";
$accessKeySecret = "<您从OSS获得的AccessKeySecret>";
$endpoint = "<您选定的OSS数据中心访问域名,例如http://oss-cn-hangzhou.aliyuncs.com>";
try {
    $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint);
} catch (OssException $e) {
    print $e->getMessage();
}

4,配置网络参数

<?php
$ossClient->setTimeout(3600 /* seconds */);
$ossClient->setConnectTimeout(10 /* seconds */);

其中:

  • setTimeout设置请求超时时间,单位秒,默认是5184000秒, 这里建议 不要设置太小,如果上传文件很大,消耗的时间会比较长

  • setConnectTimeout设置连接超时时间,单位秒,默认是10秒

三、快速入门

1,常用类

类名解释
OSS\OssClientOSS客户端类,用户通过OssClient的实例调用接口
OSS\Core\OssExceptionOSS异常类,用户在使用的过程中,只需要注意这个异常

2,创建储存空间

您可以按照下面的代码新建一个存储空间(Bucket):

<?php
require_once __DIR__ . '/aliyun-oss-php-sdk-master/autoload.php';
use OSS\OssClient;
use OSS\Core\OssException;

$accessKeyId = "<您从OSS获得的AccessKeyId>";
$accessKeySecret = "<您从OSS获得的AccessKeySecret>";
$endpoint = "<您选定的OSS数据中心访问域名,例如http://oss-cn-hangzhou.aliyuncs.com>";
$bucket = "<您使用的存储空间名称,注意命名规范>";
try {
    $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint);
    $ossClient->createBucket($bucket);
} catch (OssException $e) {
    print $e->getMessage();
}

3,上传文件

文件(Object)是OSS中最基本的数据单元,您可以把它简单地理解为文件,用下面代码可以实现上传:

<?php
$accessKeyId = "<您从OSS获得的AccessKeyId>";
$accessKeySecret = "<您从OSS获得的AccessKeySecret>";
$endpoint = "<您选定的OSS数据中心访问域名,例如http://oss-cn-hangzhou.aliyuncs.com>";
$bucket= " <您使用的Bucket名字,注意命名规范>";
$object = " <您使用的Object名字,注意命名规范>";
$content = "Hi, OSS.";
try {
    $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint);
    $ossClient->putObject($bucket, $object, $content);
} catch (OssException $e) {
    print $e->getMessage();
}

4,下载文件

上传文件后,您可以读取它的内容。以下代码获取Object的文本内容:

<?php
$accessKeyId = "<您从OSS获得的AccessKeyId>";
$accessKeySecret = "<您从OSS获得的AccessKeySecret>";
$endpoint = "<您选定的OSS数据中心访问域名,例如http://oss-cn-hangzhou.aliyuncs.com>";
$bucket= " <您使用的Bucket名字,注意命名规范>";
$object = " <您使用的Object名字,注意命名规范>";
try {
    $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint);
    $content = $ossClient->getObject($bucket, $object);
    print("object content: " . $content);
} catch (OssException $e) {
    print $e->getMessage();
}

5,列举文件

当完成上传文件操作后,可能需要查看存储空间下包含哪些文件。以下代码展示如何列举存储空间下的文件:

<?php
$accessKeyId = "<您从OSS获得的AccessKeyId>";
$accessKeySecret = "<您从OSS获得的AccessKeySecret>";
$endpoint = "<您选定的OSS数据中心访问域名,例如http://oss-cn-hangzhou.aliyuncs.com>";
$bucket= " <您使用的Bucket名字,注意命名规范>";
try {
    $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint);
    $listObjectInfo = $ossClient->listObjects($bucket);
    $objectList = $listObjectInfo->getObjectList();
    if (!empty($objectList)) {
        foreach ($objectList as $objectInfo) {
        print($objectInfo->getKey() . "\t" . $objectInfo->getSize() . "\t" . $objectInfo->getLastModified() . "\n");
        }
    }
} catch (OssException $e) {
    print $e->getMessage();
}

6,删除文件

以下代码可以删除指定存储空间下指定的文件(Object):

<?php
$accessKeyId = "<您从OSS获得的AccessKeyId>";
$accessKeySecret = "<您从OSS获得的AccessKeySecret>";
$endpoint = "<您选定的OSS数据中心访问域名,例如http://oss-cn-hangzhou.aliyuncs.com>";
$bucket= " <您使用的Bucket名字,注意命名规范>";
$object = " <您使用的Object名字,注意命名规范>";
try {
    $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint);
    $ossClient->deleteObject($bucket, $object);
} catch (OssException $e) {
    print $e->getMessage();
}

7,返回结果处理

OssClient提供的接口返回数据分为两类:

  • Put,Delete类接口返回null,如果没有OssException,即可认为操作成功

  • Get,List类接口返回对应的数据,如果没有OssException,即可认为操作成功

例如:

<?php
$bucketListInfo = $ossClient->listBuckets();
$bucketList = $bucketListInfo->getBucketList();
foreach($bucketList as $bucket) {
    print($bucket->getLocation() . "\t" . $bucket->getName() . "\t" . $bucket->getCreatedate() . "\n");
}

上面代码中的$bucketListInfo的数据类型是 OSS\Model\BucketListInfo

 


文件下载:

aliyun-oss-php-sdk-master.zip



回复列表


回复操作