<?php
//阿里雲oss存儲
namespace app\common\controller;
vendor('aliyun-oss.autoload');
use OSS\OssClient;
use OSS\Core\OssException;
class AliyunOss
{
public $accessKeyId = "";
public $accessKeySecret = "";
public $endpoint = "";
public $bucket= "";
/**
* oss 上傳圖片或其他文件
* @param $object oss存儲地址
* @param $filePath 帶路徑文件名
*/
public function uploadOssFile($object, $filePath)
{
try{
$ossClient = new OssClient($this->accessKeyId, $this->accessKeySecret, $this->endpoint);
$ossClient->uploadFile($this->bucket, $object, $filePath);
} catch(OssException $e) {
return false;
}
return true;
}
/**
* oss判斷文件是否存在
* @param $object 要判斷的文件
*/
public function checkFileExist($object)
{
try{
$ossClient = new OssClient($this->accessKeyId, $this->accessKeySecret, $this->endpoint);
$exist = $ossClient->doesObjectExist($this->bucket, $object);
} catch(OssException $e) {
return false;
}
return $exist;
}
/**
* oss 刪除多個文件
* @param $objects array 多個文件
* @return bool
*/
public function deleteFiles($objects)
{
try{
$ossClient = new OssClient($this->accessKeyId, $this->accessKeySecret, $this->endpoint);
$ossClient->deleteObjects($this->bucket, $objects);
} catch(OssException $e) {
return false;
}
return true;
}
/**
* 獲取指定文件件下的文件列表
* @param string $prefix 指定目錄
* @param string $nextMarker 從那個文件開始(不包含)(獲取文件夾下所有文件的話,值與$prefix相同)
* @param string $delimiter 對文件名稱進行分組的一個字符。CommonPrefixes是以delimiter結尾,並有共同前綴的文件集合。
* @param string $maxkeys 列舉文件的最大個數。默認爲100,最大值爲1000。
* @return bool array 返回文件列表
*/
public function listObject($prefix = '', $nextMarker = '', $delimiter= '', $maxkeys = '')
{
try {
$options = array(
'prefix' => $prefix,
'marker' => $nextMarker,
'delimiter' => $delimiter,
'max-keys' => $maxkeys,
);
$ossClient = new OssClient($this->accessKeyId, $this->accessKeySecret, $this->endpoint);
$listObjectInfo = $ossClient->listObjects($this->bucket, $options);
} catch (OssException $e) {
return false;
}
// $nextMarker = $listObjectInfo->getNextMarker();
$listObject = $listObjectInfo->getObjectList();
// $listPrefix = $listObjectInfo->getPrefixList();
if (!empty($listObject)) {
$list = array();
foreach ($listObject as $objectInfo) {
$list[] = $objectInfo->getKey();
}
return $list;
}else{
return false;
}
}
}