/** * Create a directory. * * @param string $dirname directory name * @param Config $config * @return array|false */ public function createDir($dirname, Config $config) { $object = $this->applyPathPrefix($dirname); $options = $this->getOptionsFromConfig($config); try { $this->client->createObjectDir($this->bucket, $object, $options); } catch (OssException $e) { return false; } return ['path' => $dirname, 'type' => 'dir']; }
/** * 列出Bucket内所有目录和文件, 根据返回的nextMarker循环得到所有Objects * * @param OssClient $ossClient OssClient实例 * @param string $bucket 存储空间名称 * @return null */ function listAllObjects($ossClient, $bucket) { //构造dir下的文件和虚拟目录 for ($i = 0; $i < 100; $i += 1) { $ossClient->putObject($bucket, "dir/obj" . strval($i), "hi"); $ossClient->createObjectDir($bucket, "dir/obj" . strval($i)); } $prefix = 'dir/'; $delimiter = '/'; $nextMarker = ''; $maxkeys = 30; while (true) { $options = array('delimiter' => $delimiter, 'prefix' => $prefix, 'max-keys' => $maxkeys, 'marker' => $nextMarker); var_dump($options); try { $listObjectInfo = $ossClient->listObjects($bucket, $options); } catch (OssException $e) { printf(__FUNCTION__ . ": FAILED\n"); printf($e->getMessage() . "\n"); return; } // 得到nextMarker,从上一次listObjects读到的最后一个文件的下一个文件开始继续获取文件列表 $nextMarker = $listObjectInfo->getNextMarker(); $listObject = $listObjectInfo->getObjectList(); $listPrefix = $listObjectInfo->getPrefixList(); var_dump(count($listObject)); var_dump(count($listPrefix)); if ($nextMarker === '') { break; } } }