node.js - 如何在 GCS 中仅列出文件而不列出文件夹?

标签 node.js google-cloud-storage

我是 GCS 新手。我试图列出“文件夹”中的文件并下载它们,但是我的列表将文件夹名称返回为索引 0。

如何只列出文件名而不列出目录名?或者我应该在取回列表后移动()数组?

const prefix = 'testFiles/'; //contains jpgs
const delimiter = '/';
    const options = {
        prefix: prefix,
      };

      if (delimiter) {
        options.delimiter = delimiter;
      }

const [files] = await storage.bucket(bucketName).getFiles();

files.forEach((file, i) => {
    options.destination = `./downloads/${i}.jpg`
    console.log(options);
    file.download(options)
});
}

最佳答案

Google Cloud Storage 没有真正的“文件夹”。相反,它们是使用 List Objects 的前缀和分隔符参数来模拟的。方法。

你的做法是正确的。但是,当您使用前缀列出时,将返回以该前缀开头的所有对象,直到分隔符(如果指定)。这意味着,就像您发现的那样,如果有一个“目录占位符”对象(以 / 结尾的对象),它将被返回。请注意,这也意味着该前缀的任何“子目录”也将被返回。例如,如果您的存储桶中有以下对象列表:

testFiles/
testFiles/a
testFiles/b
testFiles/c/d
testFiles/v

如果您使用 prefix=testFiles/delimiter=/ 调用列表对象,您将返回以下内容:

items =
  testFiles/
  testFiles/a
  testFiles/b
  testFiles/v
prefixes =
  testFiles/c/

这是因为 testFiles/ 实际上是 GCS 中存储桶中的一个对象。

关于node.js - 如何在 GCS 中仅列出文件而不列出文件夹?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54170935/

相关文章:

ruby-on-rails - 大文件从 S3 到 Google Cloud Storage 的内存高效传输

javascript - Node.js 和 Multer - 在回调函数 (req,res) 中处理上传文件的目的地

javascript - Node.js Express : re-accessing variables injected into . html 文件

java - 如何将java与Braid框架一起使用示例: pigtail?

javascript - expressjs使用用户id查询数据库?

google-api - 将 Google Cloud Storage 中的文件添加到云端硬盘

node.js - 谷歌云客户端库 key 文件作为 json

python - HttpError 401 尝试通过 CloudStorage Pipeline 访问 BigQuery 网址

google-app-engine - 为什么我在管理面板中同时看到 Blobstore 和数据存储查看器?

javascript - 将变量设置为 Mongoose Find 的结果