OSS中檔案數量龐大時,所有檔案平鋪儲存會導致尋找困難、大量操作複雜。為瞭解決這些問題,OSS提供了目錄功能,通過類比檔案夾的結構來組織和管理海量對象。
建立目錄
以下代碼用於建立目錄。
const OSS = require('ali-oss');
const client = new OSS({
// yourregion填寫Bucket所在地區。以華東1(杭州)為例,Region填寫為oss-cn-hangzhou。
region: 'yourregion',
// 從環境變數中擷取訪問憑證。運行本程式碼範例之前,請確保已設定環境變數OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。
accessKeyId: process.env.OSS_ACCESS_KEY_ID,
accessKeySecret: process.env.OSS_ACCESS_KEY_SECRET,
// 填寫Bucket名稱。
bucket: 'examplebucket',
});
async function putBuffer () {
try {
// 填寫目錄名稱,目錄需以正斜線結尾。
const result = await client.put('exampledir/', new Buffer(''));
console.log(result);
} catch (e) {
console.log(e);
}
}
putBuffer();刪除目錄
警告
刪除目錄會同步刪除目錄下包含的子目錄以及所有檔案,請謹慎操作。
以下代碼用於刪除log/目錄及目錄下的所有檔案。
const OSS = require('ali-oss');
const client = new OSS({
// yourregion填寫Bucket所在地區。以華東1(杭州)為例,Region填寫為oss-cn-hangzhou。
region: 'yourregion',
// 從環境變數中擷取訪問憑證。運行本程式碼範例之前,請確保已設定環境變數OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。
accessKeyId: process.env.OSS_ACCESS_KEY_ID,
accessKeySecret: process.env.OSS_ACCESS_KEY_SECRET,
// 填寫儲存空間名稱。
bucket: 'yourbucketname'
});
// 處理請求失敗的情況,防止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('log/')相關文檔
建立目錄
關於建立目錄的API介面說明,請參見PutObject。
刪除目錄
關於刪除目錄及目錄下所有檔案的完整範例程式碼,請參見GitHub樣本。
關於刪除目錄及目錄下所有檔案的API介面說明,請參見DeleteObject。