1. 程式人生 > >Laravel5.2 整合阿里雲--OSS物件儲存服務

Laravel5.2 整合阿里雲--OSS物件儲存服務

<?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); } }