1. 程式人生 > >PHP-阿里OSS列出bucket下或者‘某個目錄下’的所有檔案

PHP-阿里OSS列出bucket下或者‘某個目錄下’的所有檔案

阿里的oss中是沒有目錄這個概念的,所謂目錄 ,是檔案的字首來區分的。

/**
     * 列出Bucket內所有目錄和檔案, 根據返回的nextMarker迴圈呼叫listObjects介面得到所有檔案和目錄
     * 
     * @param $prefix 你要列出的檔案所在的目錄名
     * @param $nextMarker 從上一次listObjects讀到的最後一個檔案的下一個檔案開始繼續獲取檔案列表
     * @param $delimiter 為行使資料夾功能的分割符號,如 /
     * @param $maxkeys max-keys用於限定此次返回object的最大數
     */
public function olists($prefix,$nextMarker='',$delimiter='/',$maxkeys=30) { $options = array( 'delimiter' => $delimiter, 'prefix' => $prefix, 'max-keys' => $maxkeys, 'marker' => $nextMarker, ); try { $listObjectInfo
= $this->ossClient->listObjects($this->bucket, $options); } catch (OssException $e) { return $this->ci->error_code->oss_obj_lists_no($e->getMessage()); } // 得到nextMarker,從上一次listObjects讀到的最後一個檔案的下一個檔案開始繼續獲取檔案列表 $nextMarker = $listObjectInfo
->getNextMarker(); $listObject = $listObjectInfo->getObjectList(); $listPrefix = $listObjectInfo->getPrefixList(); $list = array(); $list['nextMarker'] = $nextMarker; foreach($listObject as $info){ $list['file'][] = array( 'name' => $info->getKey(), 'lastModified' => $info->getLastModified() ); } foreach($listPrefix as $info){ $list['dir'][] = array('name' => $info->getPrefix()); } return $this->ci->error_code->oss_obj_lists_yes($list); }