本文介绍如何单个或者批量删除文件(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')