查看文件列表
您可以通过 OSS API 中的 GetBucket 接口列出您在存储空间(Bucket)中上传的文件(Object)。
您可以调用通过 GetBucket 接口,一次性得到某一 Bucket 下最多 1000 个 Object 的列表。通过下面的四个参数,您可以实现多种列举功能:
名称 | 作用 |
---|---|
Delimiter | 用于对 Object 名字进行分组的字符。所有名字包含指定的前缀且第一次出现 Delimiter 字符之间的 Object 作为一组元素:CommonPrefixes。 |
Marker | 设定结果从 Marker 之后按字母排序的第一个开始返回。 |
MaxKeys | 限定此次返回 Object 的最大数。默认为 100,最大值为 1000。 |
Prefix | 限定返回的 Object key 必须以 Prefix 作为前缀。注意使用 Prefix 查询时,返回的 key 中仍会包含 Prefix。 |
操作方式
操作方式 | 说明 |
---|---|
控制台 | 可在控制台对应 Bucket 的文件管理内直接查看 |
图形化工具 ossbrowser | 图形化工具,易操作 |
命令行工具 ossutil | 命令行工具,性能好 |
Java SDK | 丰富、完整的各类语言 SDK demo |
Python SDK | |
PHP SDK | |
Go SDK | |
C SDK | |
.NET SDK | |
Android SDK | |
Node.js SDK | |
Browser.js SDK | |
Ruby SDK |
文件夹功能
OSS 是没有文件夹这个概念的,所有元素都是以 Object 来存储。创建模拟文件夹本质上来说是创建了一个大小为 0 的 Object。这个 Object 可以被上传和下载,只是控制台会对以正斜线(/)结尾的 Object 以文件夹的方式展示。所以您可以使用上述方式来创建文件夹。
您可以通过 Delimiter 和 Prefix 参数的配合实现文件夹功能:
- 如果把 Prefix 设为某个文件夹名,就可以罗列以此 Prefix 开头的文件,即该文件夹下递归的所有的文件和子文件夹(目录)。文件名在Contents中显示。
- 如果再把 Delimiter 设置为正斜线(/)时,返回值就只罗列该文件夹下的文件和子文件夹(目录),该文件夹下的子文件名(目录)返回在 CommonPrefixes 部分,子文件夹下递归的文件和文件夹不被显示。
示例:
文件D
目录A/文件C
目录A/文件D
目录A/目录B/文件B
目录A/目录B/目录C/文件A
目录A/目录C/文件A
目录A/目录D/文件B
目录B/文件A
- 列出第一层目录和文件
根据 API 中请求约定,需要设置 Prefix 为“”,Delimiter 为“/”。返回结果如下:
<?xml version="1.0" encoding="UTF-8"?> <ListBucketResult> <Name>oss-sample</Name> <Prefix></Prefix> <Marker></Marker> <MaxKeys>1000</MaxKeys> <Delimiter>/</Delimiter> <IsTruncated>false</IsTruncated> <Contents> <Key>文件D</Key> <LastModified>2015-11-06T10:07:11.000Z</LastModified> <ETag>"8110930DA5E04B1ED5D84D6CC4DC9080"</ETag> <Type>Normal</Type> <Size>3340</Size> <StorageClass>Standard</StorageClass> <Owner> <ID>oss</ID> <DisplayName>oss</DisplayName> </Owner> </Contents> <CommonPrefixes> <Prefix>目录A/</Prefix> </CommonPrefixes> <CommonPrefixes> <Prefix>目录B/</Prefix> </CommonPrefixes> </ListBucketResult>
可以看到,Contents 返回的是第一层的文件“文件 D”;CommonPrefixes 返回的是第一层的目录“目录 A/” 和 “目录 B/”。而“目录 A/” 和 “目录 B/”下的文件名不显示。
- 列出目录A底下的第二层目录和文件
根据 API 中请求约定,需要设置 Prefix 为“目录 A”,Delimiter 为“/”。返回结果如下:
<?xml version="1.0" encoding="UTF-8"?> <ListBucketResult> <Name>oss-sample</Name> <Prefix>目录A/</Prefix> <Marker></Marker> <MaxKeys>1000</MaxKeys> <Delimiter>/</Delimiter> <IsTruncated>false</IsTruncated> <Contents> <Key>目录A/文件C</Key> <LastModified>2015-11-06T09:36:00.000Z</LastModified> <ETag>"B026324C6904B2A9CB4B88D6D61C81D1"</ETag> <Type>Normal</Type> <Size>2</Size> <StorageClass>Standard</StorageClass> <Owner> <ID>oss</ID> <DisplayName>oss</DisplayName> </Owner> </Contents> <Contents> <Key>目录A/文件D</Key> <LastModified>2015-11-06T09:36:00.000Z</LastModified> <ETag>"B026324C6904B2A9CB4B88D6D61C81D1"</ETag> <Type>Normal</Type> <Size>2</Size> <StorageClass>Standard</StorageClass> <Owner> <ID>oss</ID> <DisplayName>oss</DisplayName> </Owner> </Contents> <CommonPrefixes> <Prefix>目录A/目录B/</Prefix> </CommonPrefixes> <CommonPrefixes> <Prefix>目录A/目录C/</Prefix> </CommonPrefixes> <CommonPrefixes> <Prefix>目录A/目录D/</Prefix> </CommonPrefixes> </ListBucketResult>
可以看到,Contents 返回的是第二层的文件“目录 A/文件 C”、“目录 A/文件 D”;CommonPrefixes 返回的是第二层的目录“目录 A/目录 B/”、“目录 A/目录 C/”和“目录 A/目录 D/”。而目录下的文件名不会被显示。
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。
评论