本文介绍如何单个或者批量删除文件(Object)。

警告 文件一旦删除将无法恢复,请谨慎使用删除操作。

单个删除文件

以下代码用于删除examplebucket中的exampleobject.txt文件。

let OSS = require('ali-oss')

let client = new OSS({
  // yourregion填写Bucket所在地域。以华东1(杭州)为例,Region填写为oss-cn-hangzhou。
  region: 'yourRegion',
  //  阿里云账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维,请登录RAM控制台创建RAM用户。
  accessKeyId: 'yourAccessKeyId',
  accessKeySecret: 'yourAccessKeySecret',
  // 填写Bucket名称。
  bucket: 'examplebucket',
});

async function deleteFile () {
  try {
    // 填写Object完整路径。Object完整路径中不能包含Bucket名称。
    let result = await client.delete('exampleobject.txt');
    console.log(result);
  } catch (e) {
    console.log(e);
  }
}

deleteFile();
            

批量删除文件

批量删除文件时,您可以删除指定的多个文件或者指定前缀的文件。

  • 删除指定的多个文件

    以下代码用于删除examplebucket中指定的多个文件。

    返回结果包括如下两种模式,默认返回模式为简单模式,请根据实际选择返回模式。
    • 详细模式(verbose):返回所有删除的文件列表。
    • 简单模式(quiet):只返回删除失败的文件列表。
    let OSS = require('ali-oss')
    
    let client = new OSS({
      // yourregion填写Bucket所在地域。以华东1(杭州)为例,Region填写为oss-cn-hangzhou。
      region: 'yourRegion',
      //  阿里云账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维,请登录RAM控制台创建RAM用户。
      accessKeyId: 'yourAccessKeyId',
      accessKeySecret: 'yourAccessKeySecret',
      // 填写Bucket名称。
      bucket: 'examplebucket',
    });
    
    async function deleteMulti () {
      try {
        // 填写需要删除的多个Object完整路径并设置返回模式为详细模式。Object完整路径中不能包含Bucket名称。
        //let result = await client.deleteMulti(['exampleobject-1', 'exampleobject-2', 'testfolder/sampleobject.txt']);
        //console.log(result);
        // 填写需要删除的多个Object完整路径并设置返回模式为简单模式。Object完整路径中不能包含Bucket名称。
        let result = await client.deleteMulti(['exampleobject-1', 'exampleobject-2', 'testfolder/sampleobject.txt'], {quiet: true});
        console.log(result);
      } catch (e) {
        console.log(e);
      }
    }
    
    deleteMulti();
                
  • 删除指定前缀的文件

    以下代码用于删除examplebucket中以file为前缀的文件,返回结果中只能返回删除失败的文件列表。

    const OSS = require('ali-oss');
    
    const client = new OSS({
      // yourregion填写Bucket所在地域。以华东1(杭州)为例,Region填写为oss-cn-hangzhou。
      region: 'yourRegion',
      //  阿里云账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维,请登录RAM控制台创建RAM用户。
      accessKeyId: 'yourAccessKeyId',
      accessKeySecret: 'yourAccessKeySecret',
      // 填写Bucket名称。
      bucket: 'examplebucket',
    });
    
    // 处理请求失败的情况,防止promise.all中断,并返回失败原因和失败文件名。
    async function handleDel(name, options) {
      try {
        await client.delete(name);
      } catch (error) {
        error.failObjectName = name;
        return error;
      }
    }
    
    // 删除指定前缀的文件。
    async function deletePrefix(prefix) {
      const list = await client.list({
        prefix: prefix,
      });
    
      list.objects = list.objects || [];
      const result = await Promise.all(list.objects.map((v) => handleDel(v.name)));
      console.log(result);
    }
    deletePrefix('file')