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);
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值