Google Cloud Storage + Nodejs:如何删除文件夹及其所有内容

时间:2019-03-02 13:32:02

标签: node.js google-cloud-platform google-cloud-storage

我正在使用Node 10和gcs API。

试图删除文件夹及其所有内容,但是我不知道如何。

在API文档中找不到有关删除文件夹的信息。

我尝试了以下代码,该代码仅适用于单个文件,但不适用于整个文件夹:

const { Storage } = require('@google-cloud/storage');
const storage = new Storage({
    projectId: 'my-id'
});
const bucket = storage.bucket('photos');

// Attempt to delete a folder and its files:
bucket
    .file('album-1')
    .delete()
    .then(...)
    .catch(...);

2 个答案:

答案 0 :(得分:1)

这是因为Google云端存储实际上并没有文件夹(或称其为“子目录”),而只是以前缀开头的文件。

例如,您的文件夹album-1看起来像Google Cloud Storage网络用户界面中的文件夹,但实际上,这只是一种表示文件名以album1/...开头(也称为{ {1}},依此类推。

要删除“文件夹” album1/pic1.jpg,实际上您需要删除所有以album1开头的文件。您可以按照以下步骤进行操作:

album1/...

您可以在以下文档中找到有关子目录的更多信息:https://cloud.google.com/storage/docs/gsutil/addlhelp/HowSubdirectoriesWork

答案 1 :(得分:0)

@Ohad Chaet批准的解决方案,并进行了一些调整:

let dirName = 'album-1';

let files = await bucket.getFiles();

let dirFiles = files[0].filter(f => f.id.includes(dirName + '/'));

dirFiles.forEach(async file => {
    await file.delete();
});