我们可以基于OSS从逻辑上实现文件夹功能

网站编辑2020-06-10 15:42:45679

  许多终端用户习惯了文件夹这个概念,而较难适应只有bucket和object的云存储逻辑。但我们可以基于OSS从逻辑上实现文件夹功能。
  
  首先,我们可以按照惯例,认为所有以“/”[1]结尾的Object都是一个文件夹。例如,用户认为:“folder”是一个文件;“folder/”是一个文件夹;而“folder/file.txt”是一个放在folder文件夹内名为file.txt的文件。在云存储OSS上,“folder/”、“folder”和“folder/file.txt”其实都是object。
  
  当用户需要查询一个文件夹下的文件时,我们就需要巧妙地通过List Object(Get Bucket)接口的四个参数:prefix,marker,delimiter和max-keys来实现。

  例如,我们在OSS上名为”mydata”的bucket内有如下几个文件:

我们在OSS上名为”mydata”的bucket内有如下几个文件



  如果认为这个bucket是一个传统文件系统的话,当用户进入该bucket,应该只看到一个名为“lingyun.doc”的文件和一个名为“folder/”的文件夹。为了获得这样的效果,我们将List Object请求的delimiter参数设为“/”即可,代码如下:

我们将List Object请求的delimiter参数设为“/”即可,代码如下



  OSS收到这个请求后,会返回一个XML格式的消息,中间记录了这个bucket内有一个key为“lingyun.doc”的文件,以及一个名为“folder”的common prefix,分别对应于文件和文件夹。当继续想查看文件夹”folder”内的文件列表时,可以将prefix参数设为“folder/”,代码如下:

可以将prefix参数设为“folder/”,代码如下




  执行后,我们就可以知道文件夹“folder”内,有三个文件:“file1.txt”,“file2.txt”,“file3.txt”和一个子文件夹:“image/”。
  
  list objects命令的另一个参数是max-keys,它定义了在一次请求内OSS返回文件和文件夹最大的数目,默认值是100,最大可以设成1000。但如果一个文件夹内有超过1000个文件怎么办?这时,可以利用list objects的最后一个参数——marker。这个参数告诉OSS从指定的文件开始,按照字典序
  
  查其后面的文件。示例代码为:

查其后面的文件。示例代码为

最新推荐

右侧广告图1
  • 对象存储OSS

    阿里云对象存储OSS是一款海量、安全、低成本、高可靠的云存储服务,可提供99.9999999999%(12个9)的数据持久性,99.995%的数据可用性。多种存储类型供选择,全面优化存储成本。

    171.99/年

    包年75折

  • 标准OSS存储包

    适合图片/音视频等多媒体数据存储,数据实时处理,海量存储无上限

    89.00/年

  • 号码隐私保护套餐包

    企业客户根据其不同的业务场景,可以为用户或员工在不插入SIM的情况下,增加隐私号码,使其既能享受优质的通话服务,又能隐藏真实号码,保护个人及企业数据安全,客户可通过通话记录、录音等功能管控服务质量

    28.50/年

    新客户专享 9.5折

右侧广告图2