与传统文件系统中的层级结构不同,OSS内部使用扁平结构存储数据。即所有数据均以对象(Object)的形式保存在存储空间(Bucket)中。为方便您对Object进行分组并简化权限管理,您可以创建目录,然后将目标文件存放至指定目录。

目录形式

OSS将以正斜线(/)结尾的Object视为目录。例如目标存储空间examplebucket下的目录及文件结构如下图所示:
examplebucket
    └── log/
       ├── date1.txt
       ├── date2.txt
       ├── date3.txt
    └── destfolder/
       └── 2021/
          ├── photo.jpg
以上结构示意图表明:
  • 以log为前缀的文件共有三个,分别为log/date1.txt、log/date2.txt和log/date3.txt。控制台会显示名为log的目录,如果您在控制台中打开该目录,将看到三个文件,分别为date1.txt、date2.txt 和 date3.txt。
  • 以destfolder为前缀的文件为destfolder/2021/photo.jpg。控制台将显示名为destfolder的目录,其中包含子目录2021,子目录下包含文件photo.jpg。

目录授权

例如,您希望授予第三方用户对上述示例的目标存储空间examplebucket下不同目录或者文件有不同的访问权限,您可以通过以下方式来实现:
  • log目录的三个文件log/date1.txt、log/date2.txt和log/date3.txt,分别用于存储某用户近三天访问OSS的日志。经发现近三天出现了访问速度下降、上传文件失败的情况,该用户希望相关技术支持人员可以查看log目录下的所有文件,以协助排查并解决问题。此时,您可以通过Bucket Policy授权用户访问指定资源,具体步骤请参见配置Bucket Policy
  • destfolder/2021/photo.jpg文件为公司全员2021年外出春游合照,希望公司全员都可以查看。此时,您可以将文件读写权限ACL设置为公共读,具体步骤请参见设置文件读写权限ACL

操作方式

仅允许通过控制台、图形化管理工具ossbrowser以及命令行工具ossutil创建目录。目录创建完成后,您可以将文件上传到指定目录。当您不希望保留该目录时,也可以通过以上三种方式删除目录。

操作 方式
创建目录 控制台
命令行管理工具ossutil
图形化管理工具ossbrowser
删除目录 控制台
命令行工具ossutil
图形化管理工具ossbrowser

OSS不支持通过API的方式新建或删除目录。但是您可以在使用各语言SDK时,通过添加正斜线(/)或指定Prefix的形式模拟目录的创建或删除操作。

  • 通过将保存到OSS的文件名称ObjectName或Key设置为以正斜线(/)分隔的形式来创建目录。例如当您将本地文件localfile.txt上传至目标存储空间examplebucket时,如果ObjectName设置为destfolder/localfile.txt,则examplebucket下将创建大小为0的目录destfolder,目录下包含了文件localfile.txt。以Java SDK为例,具体步骤请参见上传文件
  • 通过指定Prefix的方式删除目录及目录下的所有文件。例如Prefix指定为log,则所有以log开头的目录或文件都会被删除。以Java SDK为例,具体步骤请参见删除文件