您可以根據需要刪除單個檔案(Object)、刪除指定的多個檔案、刪除指定首碼的檔案或者刪除指定目錄及目錄下的所有檔案。
警告
請您謹慎使用刪除操作,檔案刪除後將無法恢複。
刪除單個檔案
以下代碼用於刪除examplebucket中的exampleobject.txt檔案。
const OSS = require('ali-oss');
const client = new OSS({
// oss-cn-hangzhou填寫Bucket所在地區。以華東1(杭州)為例,Region填寫為oss-cn-hangzhou。
region: 'oss-cn-hangzhou',
// 從環境變數中擷取訪問憑證。運行本程式碼範例之前,請確保已設定環境變數OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。
accessKeyId: process.env.OSS_ACCESS_KEY_ID,
accessKeySecret: process.env.OSS_ACCESS_KEY_SECRET,
authorizationV4: true,
// 填寫Bucket名稱。
bucket: 'examplebucket',
});
async function deleteObject() {
try {
// 填寫Object完整路徑。Object完整路徑中不能包含Bucket名稱。
const result = await client.delete('exampleobject.txt');
console.log(result);
} catch (error) {
console.log(error);
}
}
deleteObject();
大量刪除檔案
手動刪除檔案時,每次最多刪除1000個檔案。您可以刪除指定的多個檔案、刪除指定首碼的檔案或者刪除指定目錄及目錄下的所有檔案。
手動刪除多個檔案時,返回結果包括如下兩種模式:
詳細模式(verbose):OSS返回的訊息體中會包含所有刪除Object的結果。預設採用詳細模式。
簡單模式(quiet):OSS不返回訊息體。
OSS還支援通過設定生命週期規則來自動刪除檔案。更多資訊,請參見基於最後一次修改時間的生命週期規則。
刪除指定名稱的多個檔案
以下代碼用於刪除指定名稱的多個檔案。
const OSS = require('ali-oss');
const client = new OSS({
// oss-cn-hangzhou填寫Bucket所在地區。以華東1(杭州)為例,Region填寫為oss-cn-hangzhou。
region: 'oss-cn-hangzhou',
// 從環境變數中擷取訪問憑證。運行本程式碼範例之前,請確保已設定環境變數OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。
accessKeyId: process.env.OSS_ACCESS_KEY_ID,
accessKeySecret: process.env.OSS_ACCESS_KEY_SECRET,
authorizationV4: true,
// 填寫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名稱。
const result = await client.deleteMulti(['exampleobject-1', 'exampleobject-2', 'testfolder/sampleobject.txt'], {quiet: true});
console.log(result);
} catch (error) {
console.log(error);
}
}
deleteMulti();
刪除指定首碼或目錄下的多個檔案
以下代碼用於刪除指定首碼的多個檔案或者指定目錄(檔案夾)及目錄下的所有檔案。
警告
如果以下範例程式碼中首碼prefix的值為空白字串或者NULL,將會刪除整個Bucket內的所有檔案,請謹慎使用。
const OSS = require('ali-oss');
const client = new OSS({
// oss-cn-hangzhou填寫Bucket所在地區。以華東1(杭州)為例,Region填寫為oss-cn-hangzhou。
region: 'oss-cn-hangzhou',
// 從環境變數中擷取訪問憑證。運行本程式碼範例之前,請確保已設定環境變數OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。
accessKeyId: process.env.OSS_ACCESS_KEY_ID,
accessKeySecret: process.env.OSS_ACCESS_KEY_SECRET,
authorizationV4: true,
// 填寫Bucket名稱。
bucket: 'examplebucket',
});
// 處理請求失敗的情況,防止promise.all中斷,並返回失敗原因和失敗檔案名稱。
async function handleDel(name) {
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);
}
// 如果您需要刪除所有首碼為src的檔案,則prefix設定為src。設定為src後,所有首碼為src的非目錄檔案、src目錄以及目錄下的所有檔案均會被刪除。
deletePrefix('src');
// 如果您僅需要刪除src目錄及目錄下的所有檔案,則prefix設定為src/。
// deletePrefix('src/');
相關文檔
關於刪除單個或多個檔案的完整範例程式碼,請參見GitHub樣本。
關於刪除單個檔案的API介面說明,請參見DeleteObject。
關於刪除多個檔案的API介面說明,請參見DeleteMultipleObjects。