阿里云OSS 對(duì)象存儲(chǔ)

阿里云對(duì)象存儲(chǔ)OSS,主要是用于存儲(chǔ)靜態(tài)資源文件,它提供了很多方便的操作圖片的方法(縮放旋轉(zhuǎn)水印等),在實(shí)現(xiàn)了OSS的基礎(chǔ)上,我們也可以通過(guò)購(gòu)買(mǎi)阿里云的CDN服務(wù)輕松的實(shí)現(xiàn)內(nèi)容的分發(fā) !

什么是OSS

阿里云對(duì)象存儲(chǔ)服務(wù)(Object Storage Service病袄,簡(jiǎn)稱(chēng) OSS)墓贿,是阿里云提供的海量炎咖、安全衫冻、低成本宙枷、高可靠的云存儲(chǔ)服務(wù)斥季。它具有與平臺(tái)無(wú)關(guān)的RESTful API接口搞动,能夠提供99.99999999%的服務(wù)持久性...... 阿里云OSS詳細(xì)了解可以參考這個(gè)文檔 , 這里主要介紹的是使用方式 !

想要使用OSS 存儲(chǔ)第一步,先購(gòu)買(mǎi)阿里云的OSS存儲(chǔ)服務(wù),現(xiàn)在有特惠 0.9元 兩年40G,當(dāng)然如果還有更高需求的話(huà)那就自己看情況購(gòu)買(mǎi) !

image.png

購(gòu)買(mǎi)之后點(diǎn)擊 新建 Bucket 創(chuàng)建一個(gè) Bucket , 這個(gè)就相當(dāng)于一個(gè)示例 , 可以把它理解成一個(gè)獨(dú)立的網(wǎng)盤(pán) , 可以創(chuàng)建多個(gè) ~
下面的管理資源包可以查看你購(gòu)買(mǎi)的是那種類(lèi)型的 OSS存儲(chǔ) ~

image.png

根據(jù)個(gè)人情況選擇不同的產(chǎn)品服務(wù) ! 購(gòu)買(mǎi)地址

基本情況就算是介紹完畢了~ 下面就開(kāi)始我們新征程 !

OSS 的作用

這個(gè)OSS 存儲(chǔ)能夠幫助我們完成很多新的需求 , 如果你是土豪你可以把它當(dāng)成一個(gè)網(wǎng)盤(pán)來(lái)使用,如果你是個(gè)后端開(kāi)發(fā)者那么恭喜你,你就相當(dāng)于有了一臺(tái)靜態(tài)資源服務(wù)器 ! 你可以把圖片以及靜態(tài)頁(yè)面放到這里 ! 通過(guò)OSS獲取需要的資源,從而減少服務(wù)器的IO操作~,不止如此,一些視頻類(lèi)的網(wǎng)站還可以把需要保持的視頻存儲(chǔ)到這里,OSS還為我們提供了很多圖片處理API,包括防盜鏈午笛、水印......

這篇教程主要實(shí)現(xiàn)的是關(guān)于OSS前期配置,如果有其他想法的朋友可以去參考OSS的技術(shù)文檔 ! 直接參照 SDK 即可操作 (我當(dāng)時(shí)發(fā)昏了,看了半天亂七八糟的東西,浪費(fèi)了很多時(shí)間)

安裝

SDK下載
GitHub地址:GitHub
版本迭代:Releases
SDK API文檔:API Doc

環(huán)境準(zhǔn)備

  • PHP 5.3+,可通過(guò)php -v命令查看當(dāng)前的PHP版本苦锨。
  • cURL 擴(kuò)展逼泣,可通過(guò)php -m命令查看curl擴(kuò)展是否已經(jīng)安裝好。

安裝

有三種方式安裝 SDK

  • composer方式
  • phar方式
  • 源碼方式

composer 方式

  1. 可以通過(guò) composer 安裝項(xiàng)目依賴(lài) , 需要在項(xiàng)目的根目錄運(yùn)行 composer require aliyuncs/oss-sdk-php
  2. 或者在 composer.json 中聲明對(duì) composer require aliyuncs/oss-sdk-php 的依賴(lài)
"require": {
     "aliyuncs/oss-sdk-php": "~2.0"
 }
  1. 通過(guò) composer install 安裝依賴(lài) , 安裝完成后 , 目錄結(jié)構(gòu)應(yīng)該像下面這樣
     ├── app.php
     ├── composer.json
     ├── composer.lock
     └── vendor

其中 app.php使用戶(hù)的應(yīng)用程序 , vendor/目錄下包含了所依賴(lài)的庫(kù) , 您需要在app.php中引入依賴(lài):

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

注意 :

如果您的項(xiàng)目中已經(jīng)引用過(guò)autoload.php舟舒,則加入了SDK的依賴(lài)之后拉庶,不需要再引入autoload.php了。

如果使用composer出現(xiàn)網(wǎng)絡(luò)錯(cuò)誤秃励,可以使用composer中國(guó)區(qū)的鏡像源氏仗,方法是在命令行執(zhí)行:composer config -g repositories.packagist composer http://packagist.phpcomposer.com

有沒(méi)有點(diǎn)蒙蔽 ~~

這些是官網(wǎng)的教程,我是用的就是這種安裝方式 ~
不過(guò)我使用的是 ThinkPHP 框架,所以我的安裝路徑做了適當(dāng)?shù)男薷?~


image.png

當(dāng)你做完上述的操作后頁(yè)面上會(huì)出現(xiàn)這樣一個(gè)文件

image.png

打開(kāi)后是這樣的

image.png

里面追加一條(圖片里的橫線(xiàn))這個(gè)就OK了 , 然后 composer install運(yùn)行一下就OK~

后面也有兩種安裝方式 phar方式 和 源碼方式

phar方式

使用phar單文件方式時(shí),您需要在發(fā)布頁(yè)面中選擇相應(yīng)的版本并下載打包好的phar文件夺鲜。

在您的代碼中引入這個(gè)文件即可:

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

源碼方式

使用SDK源碼時(shí)皆尔,您需要在發(fā)布頁(yè)面中選擇相應(yīng)版本并下載打包好的zip文件。

解壓后的根目錄中包含一個(gè)autoload.php
文件币励,您需要在代碼中引入這個(gè)文件:

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

示例程序

您可以通過(guò)以下步驟運(yùn)行示例程序:

解壓下載到的sdk包

修改samples目錄中的Config.php文件

  • 修改 OSS_ACCESS_ID, 您從OSS獲得的AccessKeyId慷蠕。
  • 修改 OSS_ACCESS_KEY, 您從OSS獲得的AccessKeySecret。
  • 修改 OSS_ENDPOINT, 您選定的OSS數(shù)據(jù)中心訪(fǎng)問(wèn)域名榄审,如 http://oss-cn-hangzhou.aliyuncs.com砌们。
  • 修改 OSS_TEST_BUCKET, 您要用來(lái)運(yùn)行sample使用的bucket,sample程序會(huì)在這個(gè)bucket中創(chuàng)建一些文件。

注意:不能用生產(chǎn)環(huán)境的bucket浪感,以免污染用戶(hù)數(shù)據(jù)
到samples目錄中執(zhí)行 php RunAll.php昔头, 也可以單個(gè)運(yùn)行某個(gè)Sample文件。

image.png

給大家展示一下config.php打開(kāi)之后的樣子

image.png

OSS_ACCESS_ID 和 OSS_ACCESS_KEY 所在的位置


image.png

OSS_ENDPOINT 所在位置


image.png

OK 走到這一步,我們最艱難的步驟就算是完成了,從這以后我們基本就算是暢通無(wú)阻了

image.png

上面這張圖片好像沒(méi)什么太大幫助......

剛剛又翻了下文檔,有些概念還是要給大家介紹一下

OSS\OssClient 是SDK的客戶(hù)端類(lèi)影兽,使用者可以通過(guò)OssClient提供的接口管理存儲(chǔ)空間(Bucket)和文件(Object)等揭斧。

確定Endpoint

Endpoint是阿里云OSS服務(wù)在各個(gè)區(qū)域的地址,目前支持兩種形式

Endpoint 解釋
OSS區(qū)域地址 OSS區(qū)域地址這里
用戶(hù)自定義域名 用戶(hù)自定義域名峻堰,且CNAME指向OSS域名

關(guān)于Endpoint讹开,可以參考:點(diǎn)擊查看

OSS區(qū)域地址

使用OSS Bucket所在區(qū)域地址捐名,Endpoint查詢(xún)可以有下面兩種方式:

  • 查詢(xún)Endpoint與區(qū)域?qū)?yīng)關(guān)系詳情旦万,可以參考:點(diǎn)擊查看
  • 您可以登錄 阿里云OSS控制臺(tái)镶蹋,進(jìn)入Bucket概覽頁(yè)成艘,Bucket域名的后綴部分:如bucket-1.oss-cn-hangzhou.aliyuncs.com
    oss-cn-hangzhou.aliyuncs.com
    部分為該Bucket的外網(wǎng)Endpoint。

CNAME

  • 您可以將自己擁有的域名通過(guò)CNAME綁定到某個(gè)存儲(chǔ)空間(Bucket)上贺归,然后通過(guò)自己域名訪(fǎng)問(wèn)存儲(chǔ)空間內(nèi)的文件
  • 比如您要將域名new-image.xxxxx.com綁定到深圳區(qū)域的名稱(chēng)為image的存儲(chǔ)空間上:
  • 您需要到您的域名xxxxx.com托管商那里設(shè)定一個(gè)新的域名解析淆两,將http://new-image.xxxxx.com
    解析到 http://image.oss-cn-shenzhen.aliyuncs.com
    ,類(lèi)型為CNAME

配置密鑰

要接入阿里云OSS拂酣,您需要擁有一對(duì)有效的 AccessKey(包括AccessKeyId和AccessKeySecret)用來(lái)進(jìn)行簽名認(rèn)證秋冰。可以通過(guò)如下步驟獲得:

在獲取到 AccessKeyId和 AccessKeySecret之后婶熬,您可以按照下面步驟進(jìn)行初始化

新建OssClient

使用OSS域名新建OssClient
<?php
use OSS\OssClient;
use OSS\Core\OssException;
$accessKeyId = "<您從OSS獲得的AccessKeyId>";
$accessKeySecret = "<您從OSS獲得的AccessKeySecret>";
$endpoint = "<您選定的OSS數(shù)據(jù)中心訪(fǎng)問(wèn)域名剑勾,例如http://oss-cn-hangzhou.aliyuncs.com>";
try {
    $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint);
} catch (OssException $e) {
    print $e->getMessage();
}

OSS目前所有的節(jié)點(diǎn)列表見(jiàn):OSS節(jié)點(diǎn)列表

使用自定義域名(CNAME)新建OssClient
<?php
use OSS\OssClient;
use OSS\Core\OssException;
$accessKeyId = "<您從OSS獲得的AccessKeyId>";
$accessKeySecret = "<您從OSS獲得的AccessKeySecret>";
$endpoint = "<您的綁定在某個(gè)Bucket上的自定義域名>";
try {
    $ossClient = new OssClient(
        $accessKeyId, $accessKeySecret, $endpoint, true /* use cname */);
} catch (OssException $e) {
    print $e->getMessage();
}

其中OssClient的構(gòu)造函數(shù)中,第4個(gè)參數(shù)是含義是是否使用自定義域名赵颅,在使用CNAME的時(shí)候需要將它置成true甥材。而如果使用的是OSS官方域名,則不需要填此項(xiàng)性含,或者填為false

配置網(wǎng)絡(luò)參數(shù)

我們可以用ClientConfiguration設(shè)置一些網(wǎng)絡(luò)參數(shù):

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

其中:

  • setTimeout設(shè)置請(qǐng)求超時(shí)時(shí)間鸳惯,單位秒商蕴,默認(rèn)是5184000秒, 這里建議 不要設(shè)置太小,如果上傳文件很大芝发,消耗的時(shí)間會(huì)比較長(zhǎng)
  • setConnectTimeout設(shè)置連接超時(shí)時(shí)間绪商,單位秒,默認(rèn)是10秒

從這里開(kāi)始我們就開(kāi)始我們的 CVR 開(kāi)發(fā)模式~

注 : CVR 開(kāi)發(fā)模式即為 ctrl+C ctrl+V ctrl+R 簡(jiǎn)稱(chēng) CVR 開(kāi)發(fā)模式 , 某些編譯器中 ctrl+R為運(yùn)行

相關(guān)的 PHP 的代碼文檔里都有 , 需要使用的時(shí)候直接 copy 就可以了,根據(jù)需求稍微修改一些參數(shù)即可~

阿里文檔

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末辅鲸,一起剝皮案震驚了整個(gè)濱河市格郁,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖例书,帶你破解...
    沈念sama閱讀 206,378評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件锣尉,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡决采,警方通過(guò)查閱死者的電腦和手機(jī)自沧,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,356評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)树瞭,“玉大人拇厢,你說(shuō)我怎么就攤上這事∩古纾” “怎么了孝偎?”我有些...
    開(kāi)封第一講書(shū)人閱讀 152,702評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵,是天一觀(guān)的道長(zhǎng)凉敲。 經(jīng)常有香客問(wèn)我衣盾,道長(zhǎng),這世上最難降的妖魔是什么荡陷? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,259評(píng)論 1 279
  • 正文 為了忘掉前任雨效,我火速辦了婚禮,結(jié)果婚禮上废赞,老公的妹妹穿的比我還像新娘徽龟。我一直安慰自己,他們只是感情好唉地,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,263評(píng)論 5 371
  • 文/花漫 我一把揭開(kāi)白布据悔。 她就那樣靜靜地躺著,像睡著了一般耘沼。 火紅的嫁衣襯著肌膚如雪极颓。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 49,036評(píng)論 1 285
  • 那天群嗤,我揣著相機(jī)與錄音菠隆,去河邊找鬼。 笑死狂秘,一個(gè)胖子當(dāng)著我的面吹牛骇径,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播者春,決...
    沈念sama閱讀 38,349評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼破衔,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了钱烟?” 一聲冷哼從身側(cè)響起晰筛,我...
    開(kāi)封第一講書(shū)人閱讀 36,979評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤嫡丙,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后读第,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體曙博,經(jīng)...
    沈念sama閱讀 43,469評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,938評(píng)論 2 323
  • 正文 我和宋清朗相戀三年卦方,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了羊瘩。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,059評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡盼砍,死狀恐怖尘吗,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情浇坐,我是刑警寧澤睬捶,帶...
    沈念sama閱讀 33,703評(píng)論 4 323
  • 正文 年R本政府宣布,位于F島的核電站近刘,受9級(jí)特大地震影響擒贸,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜觉渴,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,257評(píng)論 3 307
  • 文/蒙蒙 一介劫、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧案淋,春花似錦座韵、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,262評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至瓣距,卻和暖如春黔帕,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背蹈丸。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,485評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工成黄, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人逻杖。 一個(gè)月前我還...
    沈念sama閱讀 45,501評(píng)論 2 354
  • 正文 我出身青樓慨默,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親弧腥。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,792評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容