Laravel5.2 整合阿里雲--OSS物件儲存服務
阿新 • • 發佈:2019-01-06
<?php
namespace App\Service;
use JohnLui\AliyunOSS;
use Exception;
use DateTime;
class OSS {
/* 城市名稱:
*
* 經典網路下可選:杭州、上海、青島、北京、張家口、深圳、香港、矽谷、弗吉尼亞、新加坡、悉尼、日本、法蘭克福、迪拜
* VPC 網路下可選:杭州、上海、青島、北京、張家口、深圳、矽谷、弗吉尼亞、新加坡、悉尼、日本、法蘭克福、迪拜
*/
private $city;
// 經典網路 or VPC
private $networkType;
private $AccessKeyId;
private $AccessKeySecret;
private $ossClient;
/**
* 私有初始化 API,非 API,不用關注
* @param boolean 是否使用內網
*/
public function __construct($isInternal = false) {
$this->city = config('alioss.cityName');
$this->networkType = config('alioss.networkType' );
$this->AccessKeyId = config('alioss.AccessKeyId');
$this->AccessKeySecret = config('alioss.AccessKeySecret');
if($this->networkType == 'VPC' && !$isInternal) {
throw new Exception("VPC 網路下不提供外網上傳、下載等功能");
}
$this->ossClient = AliyunOSS::boot(
$this ->city,
$this->networkType,
$isInternal,
$this->AccessKeyId,
$this->AccessKeySecret
);
}
/**
* 使用外網上傳檔案
* @param string bucket名稱
* @param string 上傳之後的 OSS object 名稱
* @param string 刪除檔案路徑
* @return boolean 上傳是否成功
*/
public static function publicUpload($bucketName, $ossKey, $filePath, $options = []) {
$oss = new OSS();
$oss->ossClient->setBucket($bucketName);
return $oss->ossClient->uploadFile($ossKey, $filePath, $options);
}
/**
* 使用阿里雲內網上傳檔案
* @param string bucket名稱
* @param string 上傳之後的 OSS object 名稱
* @param string 刪除檔案路徑
* @return boolean 上傳是否成功
*/
public static function privateUpload($bucketName, $ossKey, $filePath, $options = []) {
$oss = new OSS(true);
$oss->ossClient->setBucket($bucketName);
return $oss->ossClient->uploadFile($ossKey, $filePath, $options);
}
/**
* 使用外網直接上傳變數內容
* @param string bucket名稱
* @param string 上傳之後的 OSS object 名稱
* @param string 刪除傳的變數
* @return boolean 上傳是否成功
*/
public static function publicUploadContent($bucketName, $ossKey, $content, $options = []) {
$oss = new OSS();
$oss->ossClient->setBucket($bucketName);
return $oss->ossClient->uploadContent($ossKey, $content, $options);
}
/**
* 使用阿里雲內網直接上傳變數內容
* @param string bucket名稱
* @param string 上傳之後的 OSS object 名稱
* @param string 刪除傳的變數
* @return boolean 上傳是否成功
*/
public static function privateUploadContent($bucketName, $ossKey, $content, $options = []) {
$oss = new OSS(true);
$oss->ossClient->setBucket($bucketName);
return $oss->ossClient->uploadContent($ossKey, $content, $options);
}
/**
* 使用外網刪除檔案
* @param string bucket名稱
* @param string 目標 OSS object 名稱
* @return boolean 刪除是否成功
*/
public static function publicDeleteObject($bucketName, $ossKey) {
$oss = new OSS();
$oss->ossClient->setBucket($bucketName);
return $oss->ossClient->deleteObject($bucketName, $ossKey);
}
/**
* 使用阿里雲內網刪除檔案
* @param string bucket名稱
* @param string 目標 OSS object 名稱
* @return boolean 刪除是否成功
*/
public static function privateDeleteObject($bucketName, $ossKey) {
$oss = new OSS(true);
$oss->ossClient->setBucket($bucketName);
return $oss->ossClient->deleteObject($bucketName, $ossKey);
}
/**
* -------------------------------------------------
*
*
* 下面不再分公網內網出 API,也不註釋了,大家自行體會吧。。。
*
*
* -------------------------------------------------
*/
public function copyObject($sourceBuckt, $sourceKey, $destBucket, $destKey) {
$oss = new OSS();
return $oss->ossClient->copyObject($sourceBuckt, $sourceKey, $destBucket, $destKey);
}
public function moveObject($sourceBuckt, $sourceKey, $destBucket, $destKey) {
$oss = new OSS();
return $oss->ossClient->moveObject($sourceBuckt, $sourceKey, $destBucket, $destKey);
}
/**
* 獲取公開檔案的 URL
* @param $bucketName
* @param $ossKey
* @return string
*/
public static function getPublicObjectURL($bucketName, $ossKey) {
$oss = new OSS();
$oss->ossClient->setBucket($bucketName);
return $oss->ossClient->getPublicUrl($ossKey);
}
/**
* 獲取私有檔案的URL,並設定過期時間,如 \DateTime('+1 day')
* @param $bucketName
* @param $ossKey
* @param DateTime $expire_time
* @return mixed
*/
public static function getPrivateObjectURLWithExpireTime($bucketName, $ossKey, DateTime $expire_time) {
$oss = new OSS();
$oss->ossClient->setBucket($bucketName);
return $oss->ossClient->getUrl($ossKey, $expire_time);
}
public static function createBucket($bucketName) {
$oss = new OSS();
return $oss->ossClient->createBucket($bucketName);
}
public static function getAllObjectKey($bucketName) {
$oss = new OSS();
return $oss->ossClient->getAllObjectKey($bucketName);
}
public static function getObjectMeta($bucketName, $ossKey) {
$oss = new OSS();
return $oss->ossClient->getObjectMeta($bucketName, $ossKey);
}
}