列出OSS中的对象列表
来源:原创
时间:2018-08-05
作者:脚本小站
分类:PHP
/** * 列出OSS中的对象列表 * @param int $marker 开始位置 * @param int $limit 显示的条数 */ function get_oss_file_list($marker = '',$limit = 20,$_prefix){ Vendor('OSS.autoload'); $config = C('OSS_CONFIG'); $accessKeyId = $config['KEY_ID']; $accessKeySecret = $config['KEY_SECRET']; $endpoint = $config['ENDPOINT']; $bucket = $config['BUCKET']; $prefix = $config['PREFIX']; $domain = $config['DOMAIN']; if($_prefix){ $prefix = $_prefix; } $ossClient = new \OSS\OssClient($accessKeyId, $accessKeySecret, $endpoint); // 'delimiter' => 是一个用于对Object名字进行分组的字符。所有名字包含指定的前缀且第一次出现delimiter字符之间的object作为一组元素 $options = array( 'max-keys' => $limit, 'prefix' => $prefix, 'delimiter' => '', 'marker' => $marker, ); try{ $listObj = $ossClient->listObjects($bucket, $options); }catch(OssException $e){ // echo $e->getMessage(); return false; } // 下一页标识符 $data['prevmarker'] = $listObj->getmarker(); $data['nextmarker'] = $listObj->getnextMarker(); // 获取object信息列表 $objectList = $listObj->getObjectList(); // 组合列表 for ($i = 0; $i < count($objectList); $i++){ $key = $objectList[$i]->getKey(); $time = $objectList[$i]->getlastModified(); if(strrchr($key,'.')){ $list[] = array( 'url' => $domain.$key, 'key' => $key, 'mtime' => strtotime($time), ); } } $data['list'] = $list; return $data; }