一、使用场景
OSS可用于图片、音视频、日志等海量文件的存储。各种终端设备、Web网站程序、移动应用可以直接向OSS写入或读取数据。OSS支持流式写入和文件写入两种方式,如下图所示:
利用BGP带宽,OSS可以实现超低延时的数据直接下载。也可以配合阿里云CDN加速服务,为图片、音视频、移动应用的更新分发提供最佳体验,如下图所示:
上传文件到OSS后,可以配合媒体转码服务(MTS)和图片处理服务(IMG)进行云端的数据处理,如下图所示:
二、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\OssClient | OSS客户端类,用户通过OssClient的实例调用接口 |
OSS\Core\OssException | OSS异常类,用户在使用的过程中,只需要注意这个异常 |
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
文件下载: