1. 云栖社区>
  2. PHP教程>
  3. 正文

阿里云OSS 对象存储

作者:用户 来源:互联网 时间:2017-11-30 17:21:31

阿里存储对象oss

阿里云OSS 对象存储 - 摘要: 本文讲的是阿里云OSS 对象存储, 阿里云对象存储OSS,主要是用于存储静态资源文件,它提供了很多方便的操作图片的方法(缩放旋转水印等),在实现了OSS的基础上,我们也可以通过购买阿里云的CDN服务轻松的实现内容的分发 ! 什么是OSS阿里云对象存储服务(Object St


阿里云对象存储OSS,主要是用于存储静态资源文件,它提供了很多方便的操作图片的方法(缩放旋转水印等),在实现了OSS的基础上,我们也可以通过购买阿里云的CDN服务轻松的实现内容的分发 !


什么是OSS

阿里云对象存储服务(Object Storage Service,简称 OSS),是阿里云提供的海量、安全、低成本、高可靠的云存储服务。它具有与平台无关的RESTful API接口,能够提供99.99999999%的服务持久性...... <a href = "https://help.aliyun.com/document_detail/31817.html?spm=5176.doc31883.6.539.jJg4OC">[阿里云OSS]详细了解可以参考这个文档 , 这里主要介绍的是使用方式 !


想要使用OSS 存储第一步,先购买阿里云的OSS存储服务,现在有特惠 0.9元 两年40G,当然如果还有更高需求的话那就自己看情况购买 !


阿里云OSS 对象存储-
image.png

购买之后点击 新建 Bucket 创建一个 Bucket , 这个就相当于一个示例 , 可以把它理解成一个独立的网盘 , 可以创建多个 ~
下面的管理资源包可以查看你购买的是那种类型的 OSS存储 ~


阿里云OSS 对象存储-
image.png

根据个人情况选择不同的产品服务 ! 购买地址


基本情况就算是介绍完毕了~ 下面就开始我们新征程 !


OSS 的作用

这个OSS 存储能够帮助我们完成很多新的需求 , 如果你是土豪你可以把它当成一个网盘来使用,如果你是个后端开发者那么恭喜你,你就相当于有了一台静态资源服务器 ! 你可以把图片以及静态页面放到这里 ! 通过OSS获取需要的资源,从而减少服务器的IO操作~,不止如此,一些视频类的网站还可以把需要保持的视频存储到这里,OSS还为我们提供了很多图片处理API,包括防盗链、水印......


这篇教程主要实现的是关于OSS前期配置,如果有其他想法的朋友可以去参考OSS的技术文档 ! 直接参照 SDK 即可操作 (我当时发昏了,看了半天乱七八糟的东西,浪费了很多时间)


安装

SDK下载
GitHub地址:GitHub
版本迭代:Releases
SDK API文档:API Doc


环境准备
PHP 5.3+,可通过php -v命令查看当前的PHP版本。
cURL 扩展,可通过php -m命令查看curl扩展是否已经安装好。
安装

有三种方式安装 SDK


composer方式
phar方式
源码方式
composer 方式
可以通过 composer 安装项目依赖 , 需要在项目的根目录运行 composer require aliyuncs/oss-sdk-php
或者在 composer.json 中声明对 composer require aliyuncs/oss-sdk-php 的依赖
"require": {
"aliyuncs/oss-sdk-php": "~2.0"
}

通过 composer install 安装依赖 , 安装完成后 , 目录结构应该像下面这样
     ├── app.php
├── composer.json
├── composer.lock
└── vendor

其中 app.php使用户的应用程序 , vendor/目录下包含了所依赖的库 , 您需要在app.php中引入依赖:


require_once __DIR__ . '/vendor/autoload.php';

注意 :



如果您的项目中已经引用过autoload.php,则加入了SDK的依赖之后,不需要再引入autoload.php了。




如果使用composer出现网络错误,可以使用composer中国区的镜像源,方法是在命令行执行:composer config -g repositories.packagist composer http://packagist.phpcomposer.com



有没有点蒙蔽 ~~


这些是官网的教程,我是用的就是这种安装方式 ~
不过我使用的是 ThinkPHP 框架,所以我的安装路径做了适当的修改 ~



阿里云OSS 对象存储-
image.png

当你做完上述的操作后页面上会出现这样一个文件


阿里云OSS 对象存储-
image.png

打开后是这样的



阿里云OSS 对象存储-
image.png

里面追加一条(图片里的横线)这个就OK了 , 然后 composer install运行一下就OK~


后面也有两种安装方式 phar方式 和 源码方式


phar方式

使用phar单文件方式时,您需要在发布页面中选择相应的版本并下载打包好的phar文件。


在您的代码中引入这个文件即可:


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

源码方式

使用SDK源码时,您需要在发布页面中选择相应版本并下载打包好的zip文件。


解压后的根目录中包含一个autoload.php
文件,您需要在代码中引入这个文件:


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

示例程序

您可以通过以下步骤运行示例程序:


解压下载到的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文件。



阿里云OSS 对象存储-
image.png

给大家展示一下config.php打开之后的样子


阿里云OSS 对象存储-
image.png

OSS_ACCESS_ID 和 OSS_ACCESS_KEY 所在的位置



阿里云OSS 对象存储-
image.png

OSS_ENDPOINT 所在位置



阿里云OSS 对象存储-
image.png

OK 走到这一步,我们最艰难的步骤就算是完成了,从这以后我们基本就算是畅通无阻了


阿里云OSS 对象存储-
image.png

上面这张图片好像没什么太大帮助......


刚刚又翻了下文档,有些概念还是要给大家介绍一下


OSS/OssClient 是SDK的客户端类,使用者可以通过OssClient提供的接口管理存储空间(Bucket)和文件(Object)等。


确定Endpoint

Endpoint是阿里云OSS服务在各个区域的地址,目前支持两种形式


Endpoint 解释
OSS区域地址 OSS区域地址<a href = "https://help.aliyun.com/document_detail/31837.html?spm=5176.doc32100.2.4.hsHYJW">[这里]
用户自定义域名 用户自定义域名,且CNAME指向OSS域名

关于Endpoint,可以参考:点击查看。


OSS区域地址

使用OSS Bucket所在区域地址,Endpoint查询可以有下面两种方式:


查询Endpoint与区域对应关系详情,可以参考:点击查看。
您可以登录 阿里云OSS控制台,进入Bucket概览页,Bucket域名的后缀部分:如bucket-1.oss-cn-hangzhou.aliyuncs.com
oss-cn-hangzhou.aliyuncs.com
部分为该Bucket的外网Endpoint。
CNAME
您可以将自己拥有的域名通过CNAME绑定到某个存储空间(Bucket)上,然后通过自己域名访问存储空间内的文件
比如您要将域名new-image.xxxxx.com绑定到深圳区域的名称为image的存储空间上:
您需要到您的域名xxxxx.com托管商那里设定一个新的域名解析,将http://new-image.xxxxx.com
解析到 http://image.oss-cn-shenzhen.aliyuncs.com
,类型为CNAME
配置密钥

要接入阿里云OSS,您需要拥有一对有效的 AccessKey(包括AccessKeyId和AccessKeySecret)用来进行签名认证。可以通过如下步骤获得:


注册阿里云账号
申请AccessKey

在获取到 AccessKeyId和 AccessKeySecret之后,您可以按照下面步骤进行初始化


新建OssClient
使用OSS域名新建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();
}

OSS目前所有的节点列表见:OSS节点列表


使用自定义域名(CNAME)新建OssClient
<?php
use OSS/OssClient;
use OSS/Core/OssException;
$accessKeyId = "<您从OSS获得的AccessKeyId>";
$accessKeySecret = "<您从OSS获得的AccessKeySecret>";
$endpoint = "<您的绑定在某个Bucket上的自定义域名>";
try {
$ossClient = new OssClient(
$accessKeyId, $accessKeySecret, $endpoint, true /* use cname */);
} catch (OssException $e) {
print $e->getMessage();
}

其中OssClient的构造函数中,第4个参数是含义是是否使用自定义域名,在使用CNAME的时候需要将它置成true。而如果使用的是OSS官方域名,则不需要填此项,或者填为false


配置网络参数

我们可以用ClientConfiguration设置一些网络参数:


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

其中:



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

从这里开始我们就开始我们的 CVR 开发模式~



注 : CVR 开发模式即为 ctrl+C ctrl+V ctrl+R 简称 CVR 开发模式 , 某些编译器中 ctrl+R为运行



相关的 PHP 的代码文档里都有 , 需要使用的时候直接 copy 就可以了,根据需求稍微修改一些参数即可~


阿里文档




以上是云栖社区小编为您精心准备的的内容,在云栖社区的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索阿里 , 存储 , 对象 oss ,以便于您获取更多的相关知识。