阿里OSS對(duì)象存儲(chǔ)的簡(jiǎn)單使用

概念理解

阿里有一套自己的相關(guān)概念,既然要用人家的產(chǎn)品,就要按照人家的要求來(lái)。

Bucket存儲(chǔ)空間

Object需要存儲(chǔ)的對(duì)象

Region地域

Endpoint訪問(wèn)域名

Region和Endpoint要相對(duì)應(yīng),杭州 Region 的外網(wǎng) Endpoint 是 oss-cn-hangzhou.aliyuncs.com,內(nèi)網(wǎng) Endpoint 是 oss-cn-hangzhou-internal.aliyuncs.com。這個(gè)在阿里文檔中也有解釋。

AccessKeyId和AccessKeySecret是加密解密及身份標(biāo)識(shí)所需數(shù)據(jù),每個(gè)賬號(hào)都有,自己去控制臺(tái)翻翻。

拿到這幾個(gè)數(shù)據(jù)后,再下載阿里oss對(duì)象存儲(chǔ)sdk,就可以進(jìn)行代碼編寫(xiě)操作了。

不過(guò)在這之前還是要做幾步簡(jiǎn)單操作

1 去管理控制臺(tái)創(chuàng)建一個(gè)存儲(chǔ)空間bucket,一般選標(biāo)準(zhǔn)存儲(chǔ)類型,權(quán)限選公共讀,私有寫(xiě)。

2 設(shè)置跨域規(guī)則如下圖,有特殊要求具體處理。

代碼部分

相應(yīng)類

<?php

namespacePFinal\Storage;

useOSS\Core\OssException;

useOSS\OssClient;

classAliOss

{

protected$id;

protected$secret;

protected$endpoint;

protected$bucket;

protected$maxSize=5;//單位G 阿里單次上傳文件限制

public$message;

protected$fileName;

public function__construct(array$config=array())

{

foreach($configas$key=>$item){

$this->$key=$item;

}

}

/**

* 上傳文件

*

*@paramobject $file

*@paramstring $key

*@returnbool

*/

public functionput($file,$key)

{

// 允許上傳文件大小 (G)

$maxSize=$this->maxSize;

//檢查文件大小

if($file->getClientSize()>$maxSize*1024*1024*1020){

$this->error='文件大小不能超過(guò)'.$maxSize.'G';

return false;

}

//本地臨時(shí)文件

$tempPath=$file->getPathName();

//原擴(kuò)展

$originalExtension=$file->getClientOriginalExtension();

//新文件名

$newName=$key. uniqid().'.'.$originalExtension;

//初始化阿里oss

$ossClient=newOssClient($this->id,$this->secret,$this->endpoint);

//上傳

try{

$ossClient->uploadFile($this->bucket,$newName,$tempPath);

}catch(OssException$e){

$this->message=$e->getMessage();

return false;

}

$this->fileName=$newName;

return true;

}

/**

* 返回文件外鏈前綴 即除文件名部分

*

*@returnstring

*/

public functionpreUrl()

{

return'http://'.$this->bucket.'.'.$this->endpoint.'/';

}

/**

* 返回文件文件名

*

*@returnstring

*/

public functionobject()

{

return$this->fileName;

}

/**

* 刪除單個(gè)文件

*

*@paramstring $object 非顯示url 純文件名

*@returnstring

*/

public functiondeleteObject($object)

{

$ossClient=newOssClient($this->id,$this->secret,$this->endpoint);

try{

$ossClient->deleteObject($this->bucket,$object);

}catch(OssException$e){

$this->message=$e->getMessage();

return false;

}

return true;

}

}

具體調(diào)用

//用戶上傳文件

$file=$request->files->get('avatar');

$aliOss=newAliOss($app['ali_oss']);

//oss

if($file!=null){

if($aliOss->put($file,'pathway')){

//用戶頭像存在 刪除oss中已有對(duì)象

if(!empty($user['avatar'])){

$aliOss->deleteObject($user['avatar']);

}

$data['avatar']=$aliOss->object();

}else{

returnJson::renderWithFalse('修改失敗');

}

}

注意

上傳成功后的資源完整鏈接如下:

http://somefiles.oss-cn-shenzhen.aliyuncs.com/pathway5971a374da161.jpg

其中somefiles為bucket名稱

oss-cn-shenzhen.aliyuncs.com為endpoint名稱

pathway5971a374da161.jpg為后臺(tái)生成的資源名稱

前端顯示需要完整鏈接,但是刪除功能,只需要傳該資源名稱就行,不需要帶bucket及endpoint名稱,否則刪除不了。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,568評(píng)論 19 139
  • 阿里云對(duì)象存儲(chǔ)OSS,主要是用于存儲(chǔ)靜態(tài)資源文件,它提供了很多方便的操作圖片的方法(縮放旋轉(zhuǎn)水印等),在實(shí)現(xiàn)了OS...
    記住你姓李閱讀 10,862評(píng)論 0 9
  • 我在上一篇博客Linux本地?cái)?shù)據(jù)上傳到阿里云OSS中介紹了如何將linux本地的數(shù)據(jù)上傳到阿里云的OSS,在這篇博...
    余含軍閱讀 6,132評(píng)論 3 0
  • OSS是阿里云推出的對(duì)象存儲(chǔ)服務(wù),OSSFS是一個(gè)可以將OSS掛載到阿里云ECS服務(wù)器上的工具,可以達(dá)到存儲(chǔ)/備份...
    danfan閱讀 4,241評(píng)論 0 1
  • 環(huán)信官方Demo源碼分析及SDK簡(jiǎn)單應(yīng)用 環(huán)信官方Demo源碼分析及SDK簡(jiǎn)單應(yīng)用-ChatDemoUI3.0 環(huán)...
    imGeek閱讀 1,729評(píng)論 0 3

友情鏈接更多精彩內(nèi)容