【问题标题】:FirebaseStorage: Deleting a folder and all its contents using node.js [duplicate]FirebaseStorage:使用node.js删除文件夹及其所有内容[重复]
【发布时间】:2025-12-07 22:05:04
【问题描述】:

我想使用 node.js / Firebase Admin SDK 删除 Firebase 存储文件夹及其所有内容,但我不能。

大约一年前在下面的 google 小组中提出了一个类似的问题,我想知道现在是否有解决方案:

https://groups.google.com/forum/#!topic/firebase-talk/aG7GSR7kVtw

我可以使用下面的 node.js 示例删除单个文件:

https://mzmuse.com/blog/how-to-upload-to-firebase-storage-in-node

但我无法删除文件夹及其所有内容。

有什么想法吗?我错过了什么吗?

这是我正在使用的代码

const keyFilename="path/to/my/private.json";
const projectId = "myprojectid";
const bucketName = `${projectId}.appspot.com`;

const gcs = require('@google-cloud/storage')({
    projectId,
    keyFilename
});
const bucket = gcs.bucket(bucketName);

这很好 - 删除单个文件

const deleteFile = 'users/user1/folder1/IMG_1.JPG'
const gcFile = bucket.file(deleteFile);
gcFile.delete((err,res)=>console.log(err||res));

这不起作用 - 删除文件夹和内容

const deleteFolder = 'users/user1/'
const gcFolder = bucket.file(deleteFolder);
gcFolder.delete((err,res)=>console.log(err||res));

--

这不是某些成员所说的欺骗

我的问题是针对 node.js 的,给出的答案是针对 Java 的。

更新

我在谷歌云网站中找到了这个页面,他们展示了一种删除目录(文件夹)下所有文件的方法

https://googlecloudplatform.github.io/google-cloud-node/#/docs/google-cloud/0.56.0/storage/bucket?method=deleteFiles

bucket.deleteFiles({
  prefix: 'images/'
}, function(err) {
  if (!err) {
    // All files in the `images` directory have been deleted.
  }
});

但我仍然无法删除文件夹本身

【问题讨论】:

  • 您不能以编程方式执行此操作。阅读 dup 上的答案,了解为什么 Cloud Storage 存储桶中实际上没有任何“文件夹”。目前,删除某个位置下所有文件的唯一方法是使用 gsutil 命令行。
  • 虽然这些是 Swift 问题,但答案是适用的,并且包含回答问题的非常好的信息:This OneAnother OneThis Google Group
  • 截至 2019 年 7 月,您可以列出一个文件夹,并递归删除其内容,请在此处查看我的答案:*.com/questions/37749647/…

标签: javascript firebase google-cloud-storage firebase-admin


【解决方案1】:

来自this post:

您只能删除整个存储桶,但不能删除文件夹 在一个桶里。

使用GcsService 删除文件或文件夹。

String bucketName = "bucketname.appspot.com";

GcsService gcsService = GcsServiceFactory.createGcsService(RetryParams.getDefaultInstance());
gcsService.delete(new GcsFilename(bucketName, "test"));

【讨论】: