列举文件

本文介绍如何在开启版本控制状态下列举存储空间下(Bucket)的所有文件(Object)。

注意事项

示例代码

以下代码用于列举指定Bucket中包括删除标记(Delete Marker)在内的Object的版本信息.

import Client, { RequestError } from '@aliyun/oss';

// 创建OSS客户端实例
const client = new Client({
  // 请替换为STS临时身份凭证的Access Key ID
  accessKeyId: 'yourAccessKeyId',
  // 请替换为STS临时身份凭证的Access Key Secret
  accessKeySecret: 'yourAccessKeySecret',
  // 请替换为STS临时身份凭证的Security Token
  securityToken: 'yourSecurityToken',
  // 填写Bucket所在地域。以华东1(杭州)为例,Region填写为oss-cn-hangzhou
  region: 'oss-cn-hangzhou',
});

// bucket名称
const bucket = 'yourBucketName';
// 对象名称
const key = 'yourObjectName';

// 列出bucket中对象的版本信息
const listObjectVersions = async () => {
  try {
    // 调用listObjectVersions方法列出bucket中对象的版本信息
    const res = await client.listObjectVersions({
      bucket // 替换为你的bucket名称
    });

    // 打印返回结果,包含对象的版本信息
    console.log(JSON.stringify(res));
  } catch (err) {
    // 捕获并处理请求错误
    if (err instanceof RequestError) {
      console.log('错误码: ', err.code); // 错误代码
      console.log('错误信息: ', err.message); // 错误描述
      console.log('请求ID: ', err.requestId); // 请求的唯一标识
      console.log('HTTP状态码: ', err.status); // HTTP响应状态码
      console.log('错误类别: ', err.ec); // 错误类别
    } else {
      console.log('未知错误: ', err); // 非RequestError类型的错误
    }
  }
};

// 调用函数,列出所有对象的版本信息
listObjectVersions();

常见使用场景

列举对象的版本信息并分组

以下示例代码通过设置delimiter参数,列举对象的版本信息并分组。

import Client, { RequestError } from '@aliyun/oss';

// 创建OSS客户端实例
const client = new Client({
  // 请替换为STS临时访问凭证的Access Key ID
  accessKeyId: 'yourAccessKeyId',
  // 请替换为STS临时访问凭证的Access Key Secret
  accessKeySecret: 'yourAccessKeySecret',
  // 请替换为STS临时访问凭证的Security Token
  securityToken: 'yourSecurityToken',
  // 填写Bucket所在地域。以华东1(杭州)为例,Region填写为oss-cn-hangzhou
  region: 'oss-cn-hangzhou',
});

// 列出bucket中对象的版本信息,并使用分隔符对结果进行分组
const listObjectVersionsWithDelimiter = async () => {
  try {
    // 调用listObjectVersions方法,并指定delimiter参数对结果进行分组
    const res = await client.listObjectVersions({
      bucket, // 替换为你的bucket名称
      delimiter: '/' // 使用'/'作为分隔符,将对象按目录结构分组
    });

    // 打印返回结果
    console.log(JSON.stringify(res));
  } catch (err) {
    if (err instanceof RequestError) {
      console.log('错误码: ', err.code);
      console.log('错误信息: ', err.message);
      console.log('请求ID: ', err.requestId);
      console.log('HTTP状态码: ', err.status);
      console.log('错误类别: ', err.ec);
    } else {
      console.log('未知错误: ', err);
    }
  }
};

// 调用函数,列出对象版本信息并分组
listObjectVersionsWithDelimiter();

使用分页标记列出bucket中对象的版本信息

以下示例代码通过使用分页标记keyMarkerversionIdMarker,列出bucket中对象的版本信息。

import Client, { RequestError } from '@aliyun/oss';

// 创建OSS客户端实例
const client = new Client({
  // 请替换为STS临时访问凭证的Access Key ID
  accessKeyId: 'yourAccessKeyId',
  // 请替换为STS临时访问凭证的Access Key Secret
  accessKeySecret: 'yourAccessKeySecret',
  // 请替换为STS临时访问凭证的Security Token
  securityToken: 'yourSecurityToken',
  // 填写Bucket所在地域。以华东1(杭州)为例,Region填写为oss-cn-hangzhou
  region: 'oss-cn-hangzhou',
});

// 使用分页标记(keyMarker和versionIdMarker)列出bucket中文件的版本信息
const listObjectVersionsWithMarker = async () => {
  try {
    let keyMarker: string | undefined; // 分页标记,初始为空
    let versionIdMarker: string | undefined; // 版本分页标记,初始为空
    let isTruncated = true; // 是否还有更多数据需要获取

    // 循环获取对象的版本信息,直到没有更多数据
    while (isTruncated) {
      const res = await client.listObjectVersions({
        bucket, // 替换为你的bucket名称
        keyMarker, // 当前分页标记
        versionIdMarker // 当前版本分页标记
      });

      // 打印返回结果
      console.log(JSON.stringify(res));

      // 更新分页状态
      isTruncated = res.data.isTruncated; // 是否还有更多数据
      keyMarker = res.data.nextKeyMarker; // 下一个分页标记
      versionIdMarker = res.data.nextVersionIdMarker; // 下一个版本分页标记
    }
  } catch (err) {
    if (err instanceof RequestError) {
      console.log('错误码: ', err.code);
      console.log('错误信息: ', err.message);
      console.log('请求ID: ', err.requestId);
      console.log('HTTP状态码: ', err.status);
      console.log('错误类别: ', err.ec);
    } else {
      console.log('未知错误: ', err);
    }
  }
};

// 调用函数,使用分页标记列出所有对象的版本信息
listObjectVersionsWithMarker();

相关文档